This guide will help you configure your developer environment for the Focalboard Personal Server. For most features, this is the easiest way to get started working against code that ships across editions. For working with Mattermost Boards (Focalboard as a plugin), please refer to the Mattermost Boards Plugin Guide.
git-bash
terminal shellxcode-select --install
sudo apt-get install libgtk-3-dev
sudo apt-get install libwebkit2gtk-4.0-dev
sudo apt-get install autoconf dh-autoreconf
Fork the Focalboard GitHub repository and Mattermost GitHub repository. Clone both repositories locally in sibling directories.
To build the server:
make prebuild
make
To run the server:
./bin/focalboard-server
Then navigate your browser to `http://localhost:8000` to access your Focalboard server. The port is configured in config.json
.
Once the server is running, you can rebuild just the web app via make webapp
in a separate terminal window. Reload your browser to see the changes.
You can build standalone apps that package the server to run locally against SQLite:
git-bash
prompt.make prebuild
make win-wpf-app
cd win-wpf/msix && focalboard.exe
make prebuild
make mac-app
open mac/dist/Focalboard.app
webgtk
dependencies
sudo apt-get install libgtk-3-dev
sudo apt-get install libwebkit2gtk-4.0-dev
make prebuild
make linux-app
linux/dist/focalboard-linux.tar.gz
to a directory of your choicefocalboard-app
from the directory you have chosendocker run -it -p 80:8000 mattermost/focalboard
docker build -f docker/Dockerfile .
docker build -f docker/Dockerfile --platform linux/arm64 .
Cross-compilation currently isn’t fully supported, so please build on the appropriate platform. Refer to the GitHub Actions workflows (build-mac.yml
, build-win.yml
, build-ubuntu.yml
) for the detailed list of steps on each platform.
make prebuild
to install packages. Do this whenever dependencies change in webapp/package.json
.cd webapp && npm run watchdev
to automatically rebuild the web app when files are changed. It also includes source maps from JavaScript to TypeScript.debug
, press the Space key, and select Go: Launch Server
.debug
, press the Space key, and select Go: Launch Server
.Go: Launch Server
as an option, check your ./.vscode/launch.json
file and make sure you are not using a VS Code workspace.http://localhost:8000
You can now edit the web app code and refresh the browser to see your changes efficiently.
Debugging the web app: As a starting point, add a breakpoint to the render()
function in BoardPage.tsx
and refresh the browser to walk through page rendering.
Debugging the server: As a starting point, add a breakpoint to handleGetBlocks()
in server/api/api.go
and refresh the browser to see how data is retrieved.
We use i18n
to localize the web app. Localized string generally use intl.formatMessage
. When adding or modifying localized strings, run npm run i18n-extract
in webapp
to rebuild webapp/i18n/en.json
.
Translated strings are stored in other json files under webapp/i18n
, (e.g. es.json
for Spanish).
By default, data is stored in a sqlite database focalboard.db
. You can view and edit this directly using sqlite3 focalboard.db
.
Run make ci
, which is similar to the .gitlab-ci.yml
workflow and includes:
make server-test
cd webapp; npm run check
cd webapp; npm run test
cd webapp; npm run cypress:ci
Unit tests for Focalboard are similar to the web app and server testing requirements.
Are you interested in influencing the future of the Focalboard open source project? Please read the Focalboard Contribution Guide. We welcome everyone and appreciate any feedback. ❤️ There are several ways you can get involved: