MCPcopy
hub / github.com/mattermost-community/focalboard

github.com/mattermost-community/focalboard @v8.0.0 sqlite

repository ↗ · DeepWiki ↗ · release v8.0.0 ↗
4,660 symbols 16,013 edges 871 files 1,474 documented · 32%
README

[!WARNING] Effective September 15th, 2023, Mattermost, Inc. staff are no longer reviewing or merging pull requests for either Focalboard or the Mattermost Boards plugin in this repository (mattermost/focalboard). We encourage the community to fork this repository for continued development and contributions.

The reason behind these changes is to focus Mattermost developer resources on improving the platform’s performance and core features to ensure Mattermost continues being resilient, stable, and best-in-breed for critical operations.

️💡 Learn more

Focalboard

CI Status CodeQL Dev Release Prod Release

Focalboard

Focalboard is an open source, multilingual, self-hosted project management tool that's an alternative to Trello, Notion, and Asana.

It helps define, organize, track and manage work across individuals and teams. Focalboard comes in three editions:

  • Focalboard plugin: The Focalboard plugin integrates into an exsting Mattermost instance to combine project management tools with messaging and collaboration for teams of all sizes.

  • Personal Desktop: A standalone, single-user macOS, Windows, or Linux desktop app for your own todos and personal projects.

  • Personal Server: A standalone, multi-user server for development and personal use.

Try Focalboard

Mattermost Plugin

After downloading and installing the plugin in the System Console, select the menu in the top left corner and select Boards. Access the latest releases of the focalboard plugin by downloading the mattermost-plugin-focalboard.tar.gz file from the releases in this repository: https://github.com/mattermost/focalboard/releases

Personal Desktop (Windows, Mac or Linux Desktop)

Personal Server

Ubuntu: You can download and run the compiled Focalboard Personal Server on Ubuntu by following our latest install guide.

API Docs

Boards API docs can be found over at https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html

Getting started

Our developer guide has detailed instructions on how to set up your development environment for the Personal Server. You can also join the ~Focalboard community channel to connect with other developers.

Clone mattermost-server into sibling directory.

Create an .env file in the focalboard directory that contains:

EXCLUDE_ENTERPRISE="1"

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.

Building and running standalone desktop apps

You can build standalone apps that package the server to run locally against SQLite:

  • Windows:
  • Requires Windows 10, Windows 10 SDK 10.0.19041.0, and .NET 4.8 developer pack
  • Open a git-bash prompt.
  • Run make prebuild
  • The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
  • Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
  • Run make win-wpf-app
  • Run cd win-wpf/msix && focalboard.exe
  • Mac:
  • Requires macOS 11.3+ and Xcode 13.2.1+
  • Run make prebuild
  • The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
  • Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
  • Run make mac-app
  • Run open mac/dist/Focalboard.app
  • Linux:
  • Tested on Ubuntu 18.04
  • Install webgtk dependencies
    • Run sudo apt-get install libgtk-3-dev
    • Run sudo apt-get install libwebkit2gtk-4.0-dev
  • Run make prebuild
  • The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc.
  • Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes.
  • Run make linux-app
  • Uncompress linux/dist/focalboard-linux.tar.gz to a directory of your choice
  • Run focalboard-app from the directory you have chosen
  • Docker:
  • To run it locally from offical image:
    • docker run -it -p 80:8000 mattermost/focalboard
  • To build it for your current architecture:
    • docker build -f docker/Dockerfile .
  • To build it for a custom architecture (experimental):
    • 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.

Unit testing

Before checking in commits, run make ci, which is similar to the .gitlab-ci.yml workflow and includes:

  • Server unit tests: make server-test
  • Web app ESLint: cd webapp; npm run check
  • Web app unit tests: cd webapp; npm run test
  • Web app UI tests: cd webapp; npm run cypress:ci

Staying informed

Extension points exported contracts — how you extend this code

PropValueResolver (Interface)
PropValueResolver allows PropDef.GetValue to further decode property values, such as looking up usernames from ids. [13 …
server/model/properties.go
APIInterface (Interface)
(no doc) [10 implementers]
server/services/permissions/mmpermissions/mmpermissions.go
AuthInterface (Interface)
(no doc) [4 implementers]
server/auth/auth.go
RoutedService (Interface)
RoutedService defines the interface that is needed for any service to register themself in the web server to provide new [2 …
server/web/webserver.go
Store (Interface)
(no doc) [3 implementers]
server/ws/adapter.go
CallbackFunc (FuncType)
CallbackFunc is a func that can enqueued in the callback queue and will be called when dequeued.
server/utils/callbackqueue.go
Board (Interface)
(no doc)
import/nextcloud-deck/deck.ts
Asana (Interface)
(no doc)
import/asana/asana.ts

Core symbols most depended-on inside this repo

Run
called by 906
server/services/metrics/service.go
errorResponse
called by 426
server/api/api.go
EXPECT
called by 375
server/auth/mocks/mockauth_interface.go
App
called by 292
server/server/server.go
TearDown
called by 282
server/integrationtests/clienttestlib.go
wrapIntl
called by 273
webapp/src/testUtils.tsx
wrapDNDIntl
called by 211
webapp/src/testUtils.tsx
log
called by 208
webapp/src/utils.ts

Shape

Method 2,790
Function 1,361
Struct 207
Interface 160
Class 91
Enum 28
TypeAlias 14
FuncType 9

Languages

Go70%
TypeScript30%

Modules by API surface

server/ws/mocks/mockpluginapi.go358 symbols
server/services/permissions/mmpermissions/mocks/mockpluginapi.go358 symbols
server/services/store/mockstore/mockstore.go242 symbols
server/services/store/store.go123 symbols
server/services/store/sqlstore/public_methods.go116 symbols
server/client/client.go98 symbols
webapp/src/octoClient.ts91 symbols
webapp/src/mutator.ts75 symbols
server/integrationtests/permissions_test.go74 symbols
webapp/src/utils.ts73 symbols
import/trello/trello.ts69 symbols
server/services/store/mattermostauthlayer/mattermostauthlayer.go67 symbols

Dependencies from manifests, versioned

filippo.io/edwards25519v1.1.0 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/blang/semver/v4v4.0.0 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×
github.com/davecgh/go-spewv1.1.2-0.20180830191 · 1×
github.com/dyatlov/go-opengraph/opengraphv0.0.0-2022052409235 · 1×
github.com/francoispqt/gojayv1.2.13 · 1×
github.com/fsnotify/fsnotifyv1.7.0 · 1×
github.com/go-asn1-ber/asn1-berv1.5.7 · 1×

Datastores touched

boardsDatabase · 1 repos
(mysql)Database · 1 repos

For agents

$ claude mcp add focalboard \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact