Thank you for your interest in contributing. This document captures the conventions the team relies on when reviewing pull requests.
- Fork the repository and create a feature branch off
main. - Make focused, atomic commits using
Conventional Commits prefixes
(
feat:,fix:,docs:,chore:,refactor:,test:,style:). - Run
npm run lintandnpm testbefore opening a PR. - Open a pull request against
maindescribing the change and any trade-offs.
- TypeScript is preferred over plain JavaScript for any new module.
- Public functions and exported types should carry TSDoc/JSDoc comments.
- Avoid
anyin new code unless an external type genuinely demands it. - Keep components small and prefer composition over deep prop drilling.
For backend-specific guidance — adding routes, repositories, and tests — see docs/backend-contributing.md.
- Unit tests live next to the module they cover (
foo.ts+foo.test.ts). - New behavior should ship with at least one happy-path test and one failure-path test.
- Avoid coupling tests to private implementation details — prefer observable behavior at the module boundary.
When filing a bug, please include:
- Steps to reproduce.
- Expected vs. actual behavior.
- A minimal repro, where practical.
- Browser/OS and Node version if it is environment-specific.
Reviewers look for clarity, correctness, and adherence to the project conventions above. A passing CI run is required before merge.