Contributing
Thanks for contributing. Bug reports, tests, docs fixes, design feedback, and code contributions are all welcome.
Before you open an issue
Section titled “Before you open an issue”- Search existing issues first
- Use the provided issue templates when they fit
- Report security vulnerabilities privately — see Security Policy
Ways to contribute
Section titled “Ways to contribute”Report bugs
Section titled “Report bugs”Please include:
- A clear description of the problem
- Reproduction steps
- Expected vs actual behaviour
- Screenshots, logs, or error output when relevant
- Your OS, browser, and app version if the issue is user-facing
Suggest enhancements
Section titled “Suggest enhancements”High-quality feature requests explain:
- The user or operator problem
- The proposed behaviour
- Why the change matters
- Alternative approaches already considered
Pick up existing work
Section titled “Pick up existing work”Look for issues tagged good first issue or documentation/testing improvements.
Development setup
Section titled “Development setup”git clone https://github.com/HandoverKey/HandoverKey.gitcd HandoverKeynpm install
cp apps/api/.env.example apps/api/.envcp apps/web/.env.example apps/web/.env
npm run docker:upnpm run db:migratenpm run devQuality bar
Section titled “Quality bar”Before opening a PR:
npm run lintnpm run testnpm run build| Workspace | Tooling |
|---|---|
apps/api |
Jest integration tests (real PostgreSQL + Redis) |
apps/web |
Vitest + Testing Library |
packages/crypto |
Jest — 80% coverage threshold |
packages/database |
Jest |
packages/shared |
Jest |
Pull request guidelines
Section titled “Pull request guidelines”- Branch from
main - Keep the scope focused
- Add or update tests for behaviour changes
- Update docs when the API, UI, env contract, or deployment flow changes
- Use conventional commit prefixes:
feat:,fix:,docs:,refactor:,test:,build: - Make sure CI is green before requesting review
Coding conventions
Section titled “Coding conventions”- Follow the existing TypeScript, ESLint, and Prettier setup
- Prefer small, reviewable changes over large mixed refactors
- Keep dependency directions between apps/packages intact
- Do not commit secrets, credentials, or
.envfiles
Documentation expectations
Section titled “Documentation expectations”If your change affects any of the following, update the matching doc in the same PR:
- API routes or auth behaviour
- Environment variables
- Deployment requirements
- Security guarantees or limitations
- User-facing flows
Security reporting
Section titled “Security reporting”Do not open public GitHub issues for vulnerabilities. Email security@handoverkey.app — see SECURITY.md.
License
Section titled “License”By contributing, you agree your contributions will be licensed under the MIT licence used by this repository.