diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6c625f5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,51 @@ +# Contributing to Beacon + +## Branches + +- `main` — stable releases only, protected +- `dev` — active development, all PRs target this branch + +## Workflow + +1. Fork or create a branch from `dev` +2. Make your changes +3. Open a pull request against `dev` +4. One commit per PR (squash before opening or use squash merge) + +## Commit messages + +Use the conventional commits format: + +- `feat: add route search endpoint` +- `fix: correct lat/lon divisor for advert payloads` +- `chore: update airports.csv` +- `docs: update README project layout` + +## Code style + +- Run `gofmt -w .` before committing +- Run `go vet ./...` — no warnings +- Run `go build ./...` — must compile + +## Tests + +- Add tests for any new pure functions +- Run `go test ./...` before opening a PR +- Integration tests are not yet required but welcome + +## Dependencies + +When adding a new dependency please add it to [SHOULDERS.md](SHOULDERS.md) with +a brief description of what it does. + +## Pull requests + +- Target `dev` not `main` +- One logical change per PR +- Include a brief description of what changed and why +- Reference any related issues + +## Releases + +Merges from `dev` to `main` are done by maintainers and represent a versioned +release.