Thanks for taking the time to contribute. This guide stays short on purpose — read it once and you should be unblocked.
You need Go 1.25 or newer.
git clone https://github.com/devituz/lagodev.git
cd lagodev
go test ./...The repo is a Go workspace (go.work) so adapter modules
(adapters/gin, adapters/websocket, filesystem/s3, …) resolve to
your local source automatically — no replace directives required.
Run the full check locally:
make checkThat target runs gofmt, go vet ./..., and go test ./.... CI runs
the same thing — if it passes locally it should pass in CI.
Looking at the diff after make check? Run make fmt if gofmt
flagged anything.
- Commit messages: Conventional
Commits —
feat(web): add CSRF middleware,fix(orm): correct nil pointer in HasMany,docs: clarify migration ordering. Thereleaseworkflow generates changelog entries from these prefixes. - One feature per PR. Refactors that only touch the changed area are fine; pre-emptive cleanups belong in their own PR.
- Tests are mandatory for new features and bug fixes (a regression
test that fails on
mainand passes with your change). - Documentation: a new public API needs at least a one-paragraph
update to the relevant doc in
docs/(or a code-level Go doc comment if the feature is internal-only).
- Issues labeled
good first issueare scoped to a single file or small subsystem and have explicit acceptance criteria. Pick one and comment that you're taking it. - Issues labeled
help wantedare larger — chat in the issue thread before sending a big PR so we agree on the design first.
Do not open a public issue for vulnerabilities — see SECURITY.md for the private reporting process.
Be kind. Assume good intent. If a review feels harsh, ask for clarification rather than withdrawing the PR. We're all here to make the library better.