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 --installsudo apt-get install libgtk-3-devsudo apt-get install libwebkit2gtk-4.0-devsudo apt-get install autoconf dh-autoreconfFork 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 prebuildmake win-wpf-appcd win-wpf/msix && focalboard.exemake prebuildmake mac-appopen mac/dist/Focalboard.appwebgtk dependencies
sudo apt-get install libgtk-3-devsudo apt-get install libwebkit2gtk-4.0-devmake prebuildmake linux-applinux/dist/focalboard-linux.tar.gz to a directory of your choicefocalboard-app from the directory you have chosendocker run -it -p 80:8000 mattermost/focalboarddocker 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:8000You 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-testcd webapp; npm run checkcd webapp; npm run testcd webapp; npm run cypress:ciUnit 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: