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
"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: