Internal development guide¶
Gerege Nexus (private-gerege-nexus) is a private project.
This guide is for the authorized development team.
Монгол
·
English
Maintainers¶
- Gerege Systems Development Team (@gerege-systems)
- Gemini AI, Claude AI
Development workflow¶
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.
- 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 build
- Commit 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.
Writing a module 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.