CatColab: for developers
    Preparing search index...

    CatColab: for developers

    Note: This page can be viewed at either next.catcolab.org/dev or github.com/ToposInstitute/CatColab/blob/main/CONTRIBUTING.md.

    Grouping Package Language Instructions Documentation
    Core catlog Rust /dev/rust/catlog
    Frontend frontend TypeScript /dev/frontend/
    ui-components TypeScript /dev/ui-components
    catlog-wasm Rust /dev/rust/catlog_wasm
    Backend backend Rust README /dev/rust/backend

    CatColab is written in a mix of Rust and TypeScript. To start any development, the first steps are

    1. install Rust (say, by using rustup)
    2. install pnpm
    3. clone the CatColab repository

    "Most" development will likely only require changes to the core (catlog) and the frontend (frontend) (and thus also the bindings in catlog-wasm). For this, you can simply follow the instructions in the frontend docs, replacing $MODE by staging, i.e. running

    pnpm run build
    pnpm run dev --mode staging

    to view any changes made.

    If you are getting a Cannot find module @... or its corresponding type declarations. error from pnpm run build then you should try running

    pnpm install
    

    to install/update the npm packages.

    If your development touches the actual backend (e.g. file storage) then you will need to also follow the backend README.

    To maintain a clean and consistent codebase, we follow strict conventions on code formatting and style. To format and lint the frontend code, run these commands from the top-level directory:

    pnpm --filter ./packages/frontend run format
    pnpm --filter ./packages/frontend run lint

    To format and lint the Rust code, run these commands from the top-level directory:

    cargo fmt
    cargo clippy

    Try to remember to run these commands before making a PR. (If you forget, the CI will remind you.)

    Additional documentation for developers: