Skip to content

Contributing

We welcome contributions! This guide covers the workflow and conventions.

  1. Open an issue first for significant changes. This lets maintainers discuss the approach before you invest time coding.

  2. Fork and create a branch from main:

    Terminal window
    git checkout -b feat/short-description

    Branch naming: feat/..., fix/..., chore/..., docs/...

  3. Write tests first (TDD). Write failing tests, then implement the minimal code to make them pass.

  4. Commit using Conventional Commits:

    feat(scope): add new feature
    fix(scope): correct bug description
    chore(scope): maintenance task
    docs(scope): documentation update
    test(scope): add or update tests
    refactor(scope): restructure without behaviour change
  5. Run all tests before pushing:

    Terminal window
    pnpm test
    pnpm lint
  6. Push and open a Pull Request against main. Fill in the PR template.

  7. CI must pass — lint, tests, and build are verified automatically.

  8. A maintainer review is required before merge.

  • TypeScript strict mode is enforced
  • Prettier and ESLint are configured — run pnpm lint before pushing
  • Follow existing patterns in the codebase
  • Only add open-source packages with AGPL-3.0-compatible licenses

If you change packages/db/prisma/schema.prisma:

Terminal window
pnpm db:migrate --name describe-your-change

Commit the generated migration file. Never use db:push for changes meant to be merged.

By contributing to TheTerms, you agree that your contributions will be licensed under the AGPL-3.0 License.