Contributing
Branching
- Feature branches off
develop(default branch). - PR against
developusingdocs/pull_request_template.md. - Squash-merge; commit message follows the repo's
[TAG] [FEAT/FIX/TECH/CHORE]convention (seegit log).
CI/CD
Config in .circleci/:
- generate-deploy-config — diffs
HEADvsHEAD^1, computes changedservices/*, emits continuation workflow.FORCE_ALL=truedeploys everything. - test — unit/integration on PRs.
- deploy —
serverless deployper changed service to the target stage.
libs/* changes trigger deploy of all services (shared workspace deps). See CI/CD.
Manual deploy
From inside a service folder:
yarn g:deploy # dev
yarn g:deploy:staging # staging
yarn g:deploy:prod # prod (aws-drive-prod-admin)g:deploy = sls deploy -c ./serverless.yml --stage <stage> --region ap-southeast-2. Prune with yarn g:prune (5 dev/staging, 10 prod).
Conventions
- TypeScript; esbuild bundles each function individually (
package.individually: true). - Shared logic in
libs/, not duplicated across services. - New env vars in
serverless.common.ymlprovider.environment(shared) or serviceenvironment(service-specific). - Secrets from SSM (
ssm:/shared/drive/...) or Secrets Manager via the Parameters-and-Secrets extension (port 2773). Never hard-coded.
Docs
docs/site/ (standalone package). To add/edit a page:
- Create/edit
pages/<section>/<slug>.mdx. - Register in
lib/sections.ts(PAGES_BY_SECTION). - New service:
node scripts/init-service-docs.mjs <service>to scaffold, then authoropenapi/<service>.yaml. yarn build— validates OpenAPI specs + cross-checks paths vsserverless.yml.
See docs/site/DOCS_GUIDELINES.md.