Contributing
We welcome contributions! This guide covers the workflow and conventions.
Contribution Workflow
Section titled “Contribution Workflow”-
Open an issue first for significant changes. This lets maintainers discuss the approach before you invest time coding.
-
Fork and create a branch from
main:Terminal window git checkout -b feat/short-descriptionBranch naming:
feat/...,fix/...,chore/...,docs/... -
Write tests first (TDD). Write failing tests, then implement the minimal code to make them pass.
-
Commit using Conventional Commits:
feat(scope): add new featurefix(scope): correct bug descriptionchore(scope): maintenance taskdocs(scope): documentation updatetest(scope): add or update testsrefactor(scope): restructure without behaviour change -
Run all tests before pushing:
Terminal window pnpm testpnpm lint -
Push and open a Pull Request against
main. Fill in the PR template. -
CI must pass — lint, tests, and build are verified automatically.
-
A maintainer review is required before merge.
Code Standards
Section titled “Code Standards”- TypeScript strict mode is enforced
- Prettier and ESLint are configured — run
pnpm lintbefore pushing - Follow existing patterns in the codebase
- Only add open-source packages with AGPL-3.0-compatible licenses
Database Migrations
Section titled “Database Migrations”If you change packages/db/prisma/schema.prisma:
pnpm db:migrate --name describe-your-changeCommit the generated migration file. Never use db:push for changes meant to be merged.
License
Section titled “License”By contributing to TheTerms, you agree that your contributions will be licensed under the AGPL-3.0 License.