Contributing
Thank you for your interest in contributing to Gerege Nexus
(open-gerege-nexus). Community contributions are what make a modular,
high-performance open-source platform possible.
Монгол
·
English
Maintainers
- Gerege Systems Development Team (@gerege-systems)
- Gemini AI, Claude AI
Code of conduct
Every contributor is expected to follow the
Code of Conduct. Report unacceptable behaviour to
community@gerege.mn.
How to contribute
1. Reporting bugs
Check the open issues first so you don't file a duplicate. A good report includes:
- Clear steps to reproduce.
- Your environment (Go version, Node.js version, OS, PostgreSQL version).
- Expected versus actual behaviour, with logs where possible.
2. Suggesting enhancements
Describe the use case, the problem you are solving and the solution you have in mind.
3. Submitting pull requests
Create a branch —
git checkout -b feature/amazing-feature.Follow the code conventions:
- Backend: Go 1.26+,
gofmtformatting, structured logging withslog, explicit error handling. - Frontend: Next.js 16 App Router, TypeScript strict mode, Tailwind CSS.
- Backend: Go 1.26+,
Write tests — new backend logic ships with
*_test.gocoverage.Run the verification suite:
# Backend: format, static analysis, tests cd backend gofmt -l . go vet ./... go test -race ./... golangci-lint run # Frontend: typecheck and build cd ../frontend npx tsc --noEmit npm run buildCommit messages follow Conventional Commits:
feat: add invoice management modulefix: resolve stock level calculation roundingdocs: update module authoring guide
Open the PR against
main. Lint, tests, the frontend build and the security scans must all be green.
Adding a new business module
- Create a package under
backend/internal/apps/<module_name>/. - Implement the
internal.Moduleinterface frombackend/internal/module.goin full. - Register the module with
appregistryand addcatalog/manifests/<slug>.json. The manifest must matchappcatalog.Manifestexactly — a malformed manifest stops the server from booting. - Add the app to
catalog/apps.json. Theappstable is synchronised from that file on every boot, so no manual SQL is required. - Add the frontend view under
frontend/app/<module_name>/page.tsx.
The Module Authoring Guide walks through this in detail.
Documentation and translations
- Mongolian is the primary language. Translations live under
docs/with the_EN,_ZHand_RUsuffixes. - Do not use emoji in documentation. Where an icon is needed, use the
Flaticon assets in
assets/icons/and add the source toATTRIBUTION.md. - See
README.mdfor how to add a new translation.