Coursemap is currently a private project. Keep changes focused, reviewable and reproducible.
- Create a branch prefixed with
feat/,fix/orrefactor/. - Make one coherent change and update tests and documentation with it.
- Run
pnpm verify. For database changes, also runpnpm db:reset,pnpm db:test,pnpm db:lintandpnpm db:types. - Open a pull request using the repository template.
- Merge only after required checks pass.
Use conventional commit subjects such as feat: add email sign-in or refactor: move catalogue reads to Supabase. Write in British English, use straight apostrophes and avoid em dashes.
- Put forward-only SQL migrations in
supabase/migrations. - Enable RLS and add explicit grants and policies for every exposed relation.
- Regenerate committed TypeScript database types from the local database after applying a migration.
- Include tests for ownership boundaries and privileged actions.
- Keep the local Supabase CLI version aligned with the pinned CI version.
- Never expose a service-role key to browser code.
Catalogue data must include its source, catalogue year and retrieval provenance. Do not treat prototype fixtures, generated timetables or inferred prerequisite rules as authoritative ANU data.