Contributing
A short, enforced workflow keeps history clean and releasable.
Workflow
- Open a labeled issue describing the change. Apply a label from the taxonomy below.
- Branch off
main:feature/<issue#>_PascalCaseorfix/<issue#>_PascalCase. Never commit directly tomain. - Open a PR (also labeled) targeting
main. The PR body is Summary plusCloses #<issue>— nothing else (no test plans). - Squash-merge and delete the branch.
Commit messages
- Short, imperative subject (e.g.
Add absences endpoint). - No noise in the body; keep it focused on the what/why.
Labels
Use a label consistent with the org taxonomy:
| Label | Use for |
|---|---|
bug | A defect / incorrect behavior. |
enhancement | Improvement to existing behavior. |
feature | New functionality. |
refactor | Internal restructuring, no behavior change. |
CI/CD | Build, release, and workflow changes. |
dependencies | Dependency bumps. |
documentation | Docs-only changes. |
Versioning
application.properties is the single source of truth for the version and is synced
from the release tag automatically when a release is published — see
Production. Don't bump it by hand in feature PRs.
Code expectations
- Respect the layering rules:
Schuly.Applicationmust not referenceSchuly.Infrastructure. - Controllers stay thin and delegate to Mediator; handlers hold the logic.
- Add tests in
Schuly.Testswhere it makes sense.