Skip to content

Contributing

Mason Batchelor edited this page Mar 6, 2026 · 1 revision

Contributing

Getting Started

  1. Fork the repository
  2. Clone your fork
  3. Create a feature branch from master
  4. Make your changes
  5. Run tests: ./gradlew test
  6. Run lint: ./gradlew spotlessCheck (auto-fix with spotlessJavaApply)
  7. Submit a merge request

Code Style

We use Google Java Format enforced by Spotless. Run ./gradlew spotlessJavaApply before committing.

Architecture Rules

  • api layer must not import from infrastructure
  • core layer must have zero framework dependencies
  • application services should not call other application services directly
  • Read path uses MyBatis XML mappers; write path uses repository interfaces

Testing

  • Controller tests extend TestWithCurrentUser for authenticated endpoints
  • Repository tests extend DbTestBase (in-memory SQLite)
  • Use application-test.properties profile (no seed data)

Commit Messages

Follow Conventional Commits:

  • feat: — new feature
  • fix: — bug fix
  • docs: — documentation
  • test: — test additions/changes
  • refactor: — code restructuring
  • chore: — maintenance

Labels

We use scoped labels for triage:

  • priority::critical/high/medium/low
  • status::backlog/in-progress/review/done
  • component::backend/frontend/infrastructure

Clone this wiki locally