Skip to main content

Guidelines

Editing

The repository includes a list of recommended extensions for VSCode

Linting

The code can be linted using ESLint:

pnpm run lint
pnpm run lint:fix

Formatting

The code can be formatted using Prettier:

pnpm run fmt
pnpm run fmt:check

Testing

The code can be tested using Vitest:

pnpm run test

This is an academic project. As such, we encourage rigorous testing, but loosely tested code may also be acceptable.

Documentation

User and developer documentation is written in markdown, rendered using Docusaurus, and deployed to GitHub Pages (see below).

We are old-school and prefer readable and well-organized code over excessive inline comments.

API documentation for packages can be auto-generated from TypeDoc code comments.

Version control

This project uses GitHub for distributed version control using Git: https://github.com/TissUUmaps/TissUUmaps4

The repository follows a simplified Git Flow-like branching model, with a main branch holding the latest stable version and a single development branch, into which feature branches are merged. Branch rules protect both the main branch and the development branch from direct pushes without pull requests. Commit messages should loosely follow the conventional commits guidelines; branch names and pull requests should loosely follow conventional branch guidelines. Only signed commits can be merged.

Pre-commit hooks

Pre-commit hooks for linting and formatting are managed using Husky and lint-staged.

Pre-commit hooks are automatically installed during pnpm install using the prepare script.

Continuous integration

Continuous integration is powered by GitHub Actions. Only the main and development branches are considered.

Linting, formatting, and testing (see above) need to pass without errors before merging a pull request.

A review is automatically requested from Copilot and needs to be resolved for every pull request.

Test coverage is reported to codecov.io for every push and for every pull request.

Continuous deployment

The application and documentation is continuously deployed to GitHub Pages using GitHub Actions.

Current stable version → main branch:

Current development version → development branch:

Continuous delivery

TODO

Versioning

This project uses semantic versioning.