Development Workflow
Stoic Budget uses Conventional Commits, CI checks, and a detailed PR template to keep changes stable.
Branching
mainis the production branch- Feature work should use short-lived branches (e.g.,
feat/parsing-bereke-pdf)
Commit messages
Conventional Commits are enforced by commitlint (@commitlint/config-conventional, subject case not checked) in
the husky commit-msg hook:
feat(parsing): add Bereke bank PDF parser
fix(import): handle duplicate session retries
The types are feat, fix, docs, style, refactor, perf, test, chore and ci.
- Use the present tense and the imperative mood ("Add feature", not "Added feature" or "Adds feature")
- Limit the first line to 72 characters or less
- Separate the subject from the body with a blank line, and wrap the body at 72 characters
- Reference issues and pull requests in the footer
The pre-push hook runs the backend unit tests when backend/src changed.
Pull requests
The PR template asks for a description and type of change, the changes made, screenshots for UI work, testing notes, a checklist, and notes on security impact, database, API, documentation, dependency, breaking, and deployment changes.
CI checks
CI runs policy-as-code, shell/Dockerfile/config scans, Biome, type checks, backend unit and e2e tests, frontend tests, builds, dependency audits and license checks, a secrets scan, and a Docker image build. See CI/CD.
On pull requests, changes to migrations, entities, or data-source.ts need the db-approved label; changes to the
auth module, common/guards, common/decorators, or permissions/roles code need security-approved.
Local workflow
make lint-check
npm --prefix backend run typecheck
npm --prefix frontend run type-check
make test
make build
Adding a new feature
- Backend: create
backend/src/modules/my-feature/withmy-feature.module.ts,my-feature.service.tsandmy-feature.controller.ts. - Frontend: create
frontend/app/my-feature/withpage.tsxandcomponents/. - Tests:
backend/@tests/unit/.../my-feature.service.spec.ts, andMyFeature.test.tsxnext to the component. - Documentation: add to the relevant pages in
website/docs/, and update the API docs if you add endpoints.
Next: Testing