Focalboard

repository·main·Indexed 12 days ago

https://github.com/mattermost-community/focalboard

An open-source, multilingual, self-hosted project management tool available as a standalone desktop application or multi-user server. It includes features for deploying via Docker and Docker-Compose, developing a Web Clipper extension, and importing data from external systems such as Trello, Asana, Notion, Jira, Todoist, and Nextcloud Deck.

Tokens
22.2K
Snippets
63
Records
124
Agent score
98%

What's inside Focalboard

  1. How Focalboard migration scripts work

    main

    Focalboard executes migration scripts against the current database during server start-up. The migration engine tracks execution via the focalboard_schema_migrations table to ensure previously executed scripts are skipped.

    Key Behaviors:

    • Idempotency: Scripts are designed to be idempotent, especially for Postgres and MySQL.
    • Troubleshooting: If you encounter schema or data migration errors, you can clear all records from the focalboard_schema_migrations table and restart the server to re-run migrations.
    • Naming Convention: When writing scripts, do not include the table prefix or schema name in the table name argument; use the provided template variables instead.
  2. Manage localization and translations

    main

    The web app uses i18n for localization.

    • Usage: Use intl.formatMessage for localized strings.
    • Extraction: When adding or modifying strings, run npm run i18n-extract inside the webapp directory to rebuild webapp/i18n/en.json.
    • Translation Files: Translated strings are stored in JSON files under webapp/i18n/ (e.g., es.json for Spanish).
    cd webapp
    npm run i18n-extract
  3. Understand Notion importer scope and property types

    main

    The Notion importer has specific behaviors regarding what data is migrated:

    • Scope: The script imports all cards from a single Notion board, including their properties and markdown content.
    • Property Types: Because the Notion CSV/Markdown export format does not preserve specific property types, the importer treats all card properties as a Select type in Focalboard.
    • Post-Import Action: You will need to manually change the property types within Focalboard after the import is complete to match your desired schema.
  4. Configure the Notice.txt generation pipeline

    main

    The Notice.txt file is automatically generated using first-level dependencies. You can control the content and the search scope of this generation by configuring a config.yaml file.

    Key configuration fields include:

    • title: The application title (appears on the first line of NOTICE.txt).
    • copyright: The copyright message (appears on the second line of NOTICE.txt).
    • description: The notice file description (appears on the third line of NOTICE.txt).
    • dependencies: An array of dependency names. Adding a name here ensures it is included in the notice even if it is not a first-level dependency.
    • devDependencies: An array of dependency names to be included when referenced in the devDependency section.
    • search: An array of file patterns (supporting Globstar format, e.g., x/**/go.mod) used by the pipeline to locate package.json or go.mod files.
    title: "Mattermost Playbooks"
    copyright: "©2015-present Mattermost, Inc.  All Rights Reserved.  See LICENSE for license information."
    description: "This document includes a list of open source components used in Mattermost Playbooks, including those that have been modified."
    search:
      - "go.mod"
      - "client/go.mod"
    dependencies: []
    devDependencies: []
  5. Install prerequisites for Focalboard development

    main

    Before developing the standalone Personal Server, ensure you have the following dependencies installed:

    General Dependencies

    • Git: On Windows, use Git for Windows with the git-bash terminal.
    • Go
    • Node.js (v10+) and npm

    OS-Specific Dependencies

    • Windows: Install Mingw64 via Chocolatey.
    • macOS (for building Mac apps):
      • Install Xcode (v12+).
      • Install Xcode commandline tools via the IDE or run xcode-select --install.
    • Linux (for building Linux apps):
      • sudo apt-get install libgtk-3-dev
      • sudo apt-get install libwebkit2gtk-4.0-dev
      • sudo apt-get install autoconf dh-autoreconf
  6. Import data from external systems into Focalboard

    main

    Focalboard provides a collection of import scripts to migrate data from various project management and task tools. Note that these scripts are currently in an early stage of development.

    Supported import sources include:

    • Trello
    • Asana
    • Notion
    • Jira
    • Todoist
    • Nextcloud Deck