Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.
Go to file
Jesús Espino aa540e73ce
Permissions feature branch (#2578)
* wip

* Added data migration for populating categories

* wip

* Added data migration for populating categories

* Store WIP

* migration WIP

* category CRUD APIs complete

* category block API WIP

* block category update API done

* Fetcehed data into store

* Started displayting sidebar data

* sidebar WIP

* Dashboard - basic changes

* Sidebar dashboard btn and board switcher UI only

* Sidebar dashboard btn and board switcher UI only

* create category dialog WIP

* Create category webapp side done

* Integrated move card to other category

* board to block

* Disabled dashboard route for now as we'll implement it in phase 2

* WIP

* Added logic to open last board/view on per team level

* Add workspace to teams and boards migrations (#1986)

* Add workspace to teams and boards migrations

* Update json annotations on board models

* boards search dialog WIP

* Seach dialog WIP

* Implemented opening boiard from search results

* Boards switcher styliung

* Handled update category WS event

* Template support

* personal server support and styling fixes

* test fix WIP

* Fixed a bug causing boards to not be moved correctly beteen categories

* Fixed webapp tests

* fix

* Store changes (#2011)

* Permissions phase 1 - Websocket updates (#2014)

* Store changes

* Websockets changes

* Permissions phase 1 - Permissions service (#2015)

* Store changes

* Websockets changes

* Permissions service

* Api and app updates (#2016)

* Store changes

* Websockets changes

* Permissions service

* New API and App changes

* Delete and Patch boards and blocks endpoints

* Used correct variable

* Webapp changes WIP

* Open correct team URL

* Fixed get block API

* Used React context for workspace users

* WIP

* On load navigation sorted out

* WIP

* Nav fix

* categories WS broadcast

* Used real search API

* Fixed unfurl ppreview

* set active team in sidebar

* IMplemented navigation on changing team in sidebar

* Misc fixes

* close rows inside transaction (#2045)

* update syntax for mysql (#2044)

* Upadted mutator for new patchBlock API

* Updated patchBlock API to use new URL

* Listeining to correct event in plugin mode

* Implemented WS messages for category operations:

* Fix duplicated build tags on Makefile

* Sidebar enhancements

* Add missing prefix to SQLite migration and fix flaky tests

* Sidebar boards menu enhancement

* Fix board page interactions (#2144)

* Fix patch board card properties error

* Fix board interactions

* Fix insert blocks interactions

* Fix app tests (#2104)

* Add json1 tag to vscode launch (#2157)

* Fix add, delete and update boards and add board patch generation (#2146)

* Fix update boards and add board patch generation

* Make add board and add template work, as well as deleting a board

* Update the state on board deletion

* Delete unused variable

* Fix bad parenthesis

* Fix board creation inside plugin, options were coming null due websocket message serialization

* update property type mutators to use boards API (#2168)

* Add permissions modal (#2196)

* Initial integration

* Permissions modal, websocket updates and API tests implemented

* Avoid updating/removing user if there is only one admin left

* Fix duplicates on board search

* Adds integration test

* Addressing PR review comments

Co-authored-by: Jesús Espino <jespinog@gmail.com>

* Merge

* I'm able to compile now

* Some fixes around tests execution

* Fixing migrations

* Fixing migrations order

* WIP

* Fixing some other compilation problems on tests

* Some typescript tests fixed

* Fixing javascript tests

* Fixing compilation

* Fixing some problems to create boards

* Load the templates on initial load

* Improvements over initial team templates import

* Adding new fields in the database

* Working on adding duplicate board api

* Removing RootID concept entirely

* Improving a bit the subscriptions

* Fixing store tests for notificationHints

* Fixing more tests

* fixing tests

* Fixing tests

* Fixing tests

* Fixing some small bugs related to templates

* Fixing registration link generation/regeneration

* Fixing cypress tests

* Adding store tests for duplicateBoard and duplicateBlock

* Addressing some TODO comments

* Making the export api simpler

* Add redirect component for old workspace urls

* Removing Dashboard code

* Delete only the built-in templates on update

* fixing tests

* Adding users autocompletion

* Updating snapshots

* Fixing bad merge

* fix panic when creating new card in notifysubscriptions (#2352)

* fix lint errors (#2353)

* fix lint errors

* fix panic when creating new card in notifysubscriptions (#2352)

* fix lint errors

* fix unit test

* Revert "fix unit test"

This reverts commit 0ad78aed65.

Co-authored-by: Doug Lauder <wiggin77@warpmail.net>

* fix sql syntax error for SearchUsersByTeam (#2357)

* Fix mentions delivery (#2358)

* fix sql syntax error for SearchUsersByTeam

* fix mentions delivery

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* update api for octoClient calls, pass correct variables to mutator (#2359)

* Fixing tests after merge

* Fix sidebar context menu UI issue (#2399)

* Fix notification diff for text blocks (#2386)

* fix notification diff for text blocks; fix various linter errors.

* fix URLs to cards

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* Permissions branch: Fix card links (#2391)

* fix notification diff for text blocks; fix various linter errors.

* fix URLs to cards

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* Fixing sqlite tests

* Fixing server tests

* Update migrations to create global templates. (#2397)

* fix duplicate templates

* revert migrate.go

* update UI for empty templates

* implement updating built-in templates as global (teamId = 0)

* handle error if board not found

* update unit test

* fix more tests

* Update blocks_test.go

Fix merge issue

* fix migration sql error (#2414)

* Fixing frontend tests

* Set target team ID when using a global template (#2419)

* Fix some server tests

* Fixing onboarding creation

* Permissions branch: Fix unit tests and CI errors (part 1) (#2425)

* Fixing some small memory leaks (#2400)

* Fixing some small memory leaks

* fixing tests

* passing the tags to all test targets

* Increasing the timeout of the tests

* Fix some type checkings

* Permissions branch: Fixes all the linter errors (#2429)

* fix linter errors

* Reestructuring the router and splitting in more subcomponents (#2403)

* Reestructuring the router and splitting in more subcomponents

* Removing console.log calls

* Removing unneeded selector

* Addressing PR comment

* Fix redirection to one team when you load directly the boards home path

* Using properly the lastTeamID to redirect the user if needed

* don't allow last admin change/deleted (#2416)

* don't allow last admin change/deleted

* update for i18-extract

* fixed en.json

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>

* Splitting BoardPage component into simpler/smaller components (#2435)

* Splitting BoardPage component into simpler/smaller components

* Removing unneeded import

* Replace go migrate with morph permissions (#2424)

* merge origin/replace-go-migrate-with-morph

* run go mod tidy on mattermost-plugin and increase test timeout

* fix merge issue temprorarily

* remove some debug changes

* fixing the linter

* Allow always team 0 (global) templates fetch (#2472)

* Fix problem with viewId 0 in the URL (#2473)

* Migrate from binddata to goembed (#2471)

* Adding join logic to the board switcher (#2434)

* Adding join logic to the board switcher

* Using already existing client function and removing the joinBoard one

* Adding support for autojoin based on url

* Fixing frontend tests

* fix webapp compile error, missing enableSharedBoards (#2501)

* Fixing duplication on postgres

* Adding back views to the sidebar (#2494)

* Fix #2507. Update Swagger comments (#2508)

* Fix the flash of the template selector on board/team switch (#2490)

* Fix the flash of the template selector on board/team switch

* More fixes specially around error handling

* Fixing the bot badge (#2487)

* simplifying a bit the team store sync between channels and focalboard (#2481)

* Fix menu tests (#2528)

* fix failing menu tests

* fix lint error

* Added keyboard shortcut for boards switcher (#2407)

* Added keyboard shortcut for boards switcher

* Fixed a type error

* Added some inline comments

* Fixed lint

* Fixed bug with scroll jumping when the card is opened: (#2477)

- avoid remounting of `ScrollingComponent` for each render of `Kanban` component
  - property `autoFocus` set to false for `CalculationOptions` because it triggers `blur` even for the button in Jest tests and closes the menu
  - snapshots for tests with `CalculationOptions` updated

* Adding the frontend support for permissions and applying it to a big part of the interface. (#2536)

* Initial work on permissions gates

* Applying permissions gates in more places

* Adding more checks to the interface

* Adding more permissions gates and keeping the store up to date

* fixing some tests

* Fixing some more tests

* Fixing another test

* Fixing all tests and adding some more

* Adding no-permission snapshot tests

* Addressing PR review comments

* Fixing invert behavior

* Permissions branch:  No sqlstore calls after app shutdown (#2530)

* fix webapp compile error, missing enableSharedBoards

* refactor app init wip

* - ensure all block change notifications are finished before shutting down app
- fix unit tests for mysql (insert_at only has 1 second resolution!)

* adjust logging

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* Fixed migrations to allow upgrading from previous version (#2535)

* Added mechanism to check if schema migration is needed

* WIP

* WIP

* WIP

* WIP

* Fixed migration

* Fixed for SQLite

* minor cleaniup

* Deleted old schema migration table after running migrations

* Removed a debug log

* Fixed a bug where the code always tried to delete a table which may or may not exist

* Show properly the user avatar in the ShareBoard component (#2542)

* Fixing the last CI problems from the permissions-branch (#2541)

* Fix history ordering

* Giving some times to avoid possible race conditions

* Empty

* Reverting accidental change in the config.json

* Optimizing table view (#2540)

* Optimizing table view

* Reducing the amount of rendering for tables

* Some other performance improvements

* Improve the activeView updates

* Some extra simplifications

* Another small improvement

* Fixing tests

* Fixing linter errors

* Reducing a bit the amount of dependency with big objects in the store

* Small simplification

* Removing Commenter role from the user role selector (#2561)

* Shareboard cleanup (#2550)

* Initial work on permissions gates

* Applying permissions gates in more places

* Adding more checks to the interface

* Adding more permissions gates and keeping the store up to date

* fixing some tests

* Fixing some more tests

* Fixing another test

* Fixing all tests and adding some more

* Adding no-permission snapshot tests

* Addressing PR review comments

* cleanup some shareboard settings

* remove unused property, fix for user items being displayed for non admin

* revert change, allow users to show

Co-authored-by: Jesús Espino <jespinog@gmail.com>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* Fixing comments and cards with the new optimizations in the store (#2560)

* Fixing property creation (#2563)

* Fix user selection in table view (#2565)

* Fixing focus new row in table view (#2567)

* Permissions branch: Fix sqlite table lock (CI) (#2568)

* fix sqlite table lock

* remove test db on teardown

* revert .gitignore

* fix goimport on migration code

* fix typo

* more linter fixes

* clean up tmp db for sqlstore tests

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>

* Fixing snapshots

* Migrating center panel to functional component (#2562)

* Migrating center panel to functional component

* Fixing some tests

* Fixing another test

* Fixing linter errors

* Fixing types errors

* Fixing linter error

* Fixing cypress tests

* Fixing the last cypress test

* Simpliying a bit the code

* Making property insertion more robust

* Updating checkbox test

Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
Co-authored-by: Chen-I Lim <46905241+chenilim@users.noreply.github.com>
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Harshil Sharma <18575143+harshilsharma63@users.noreply.github.com>
Co-authored-by: Ibrahim Serdar Acikgoz <serdaracikgoz86@gmail.com>
Co-authored-by: kamre <eremchenko@gmail.com>
2022-03-22 08:24:34 -06:00
.github Tweaked bug template (#2529) 2022-03-14 14:41:40 -07:00
.vscode Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
build Update MIT-COMPILED-LICENSE.md 2021-03-19 18:26:59 -07:00
docker Pin the FROM in dockerfiles. This prevents supply chain attacks where the latest image is replaced with a malicious version. (#2302) 2022-03-18 10:57:26 -07:00
docker-testing Test all supported databases in CI (#2000) 2021-12-17 12:30:47 -05:00
docs Minor updates to the contributor's guide (#2526) 2022-03-11 12:20:59 -08:00
experiments/webext Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
import Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
linux Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
mac update to v0.16.0 (#2438) 2022-03-02 15:08:40 -07:00
mattermost-plugin Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
server Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
webapp Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
website Update index.md (#2192) 2022-03-01 19:15:09 +02:00
win-wpf update to v0.16.0 (#2438) 2022-03-02 15:08:40 -07:00
.dockerignore docker: fix docker file image and apply some good practices (#552) 2021-07-01 11:46:03 +02:00
.editorconfig
.gitignore Remove enterprise symlink (#589) 2021-06-18 07:48:01 +02:00
.gitlab-ci.yml add variable to define the image (#581) 2021-06-15 14:00:05 +02:00
app-config.json Fix indentation 2021-02-10 10:13:04 -08:00
CHANGELOG.md Update CHANGELOG.md for v0.15 2022-03-04 10:21:04 -05:00
config.json Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
CONTRIBUTING.md Update contributors list in contributing.md (#2320) 2022-02-11 10:25:23 -08:00
Dockerfile.build Pin the FROM in dockerfiles. This prevents supply chain attacks where the latest image is replaced with a malicious version. (#2302) 2022-03-18 10:57:26 -07:00
LICENSE.txt License product name 2021-01-26 13:55:35 -08:00
Makefile Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
modd-servertest.conf Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
modd-watchplugin.conf Remove indir directive as it's causing problems in OSX systems (#1328) 2021-09-24 21:01:05 +02:00
modd.conf Permissions feature branch (#2578) 2022-03-22 08:24:34 -06:00
NOTICE.txt @mention support (#1147) 2021-09-13 15:36:36 -04:00
README.md Fix #1957. Boards dev guide. (#2390) 2022-02-25 09:37:40 -08:00
responsible_disclosure_policy.md Update responsibile_disclosure_policy.md (#1383) 2021-10-01 13:39:00 +02:00
SECURITY.md Add SECURITY.md (#2349) 2022-03-18 10:55:50 -07:00
server-config.json Workspace switcher (#1052) 2021-09-08 10:22:03 +05:30

Focalboard

CI Status CodeQL Dev Release Prod Release Translation status

Like what you see? 👀 Give us a GitHub Star!

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 two main editions:

  • Personal Desktop: A stand-alone single-user Mac, Windows, or Linux desktop app for your todos and personal projects.

  • Mattermost Boards: A self-hosted or cloud server for your team to plan and collaborate.

Focalboard can also be installed as a standalone personal server for development and personal use.

Try out Focalboard

Focalboard Personal Desktop (Windows, Mac or Linux Desktop)

Try out the single-user Focalboard Personal Desktop:

Mattermost Boards

Mattermost Boards combines project management tools with messaging and collaboration for teams of all sizes. To access and use Boards, install or upgrade to Mattermost v6.0 or later as a self-hosted server or Cloud server. After logging into Mattermost, select the menu in the top left corner of Mattermost and choose Boards.

See the setup guide for more details.

Focalboard Personal Server (Ubuntu)

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

Download the latest server release from GitHub releases

Building the server

Most development can be done on the Personal Server edition. Please refer to the Developer's Tips & Tricks for more detailed steps. Here's a summary:

First, install basic dependencies:

  • Go 1.15+
  • Node 16.3+ and npm
  • Mingw64 on Windows
make prebuild
make

Running and testing the server

To start the server, run ./bin/focalboard-server

Server settings are in config.json (or the path specified with --config).

Open a browser to http://localhost:8000 to start.

Building and running standalone desktop apps

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

  • Mac:
    • make mac-app
    • run mac/dist/Focalboard.app
    • Requires: macOS 11.3+, Xcode 13.2.1+
  • Linux:
    • Install webgtk dependencies
      • sudo apt-get install libgtk-3-dev
      • sudo apt-get install libwebkit2gtk-4.0-dev
    • 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
    • Tested with: Ubuntu 18.04
  • Windows:
    • Open a git-bash prompt
    • make win-wpf-app
    • run cd win-wpf/msix && focalboard.exe
    • Requires: Windows 10, Windows 10 SDK 10.0.19041.0, .NET 4.8 developer pack
  • 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 tests

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

  • Server unit tests: make server-test
  • Webapp eslint: cd webapp; npm run check
  • Webapp unit tests: cd webapp; npm run test
  • Webapp UI tests: cd webapp; npm run cypress:ci

Stay informed on progress

Share your feedback

File bugs, suggest features, join our forum, learn more here!

Contributing

Contribute code, bug reports, and ideas to the future of the Focalboard project. We welcome your input! Please see CONTRIBUTING.md for details on how to get involved.

Translating

Help translate Focalboard! The app is already translated into several languages. We welcome corrections and new language translations! You can add new languages or improve existing translations at Weblate.