Skip to content

Contributing ​

Who this is for: Developers working in this monorepo

Layout ​

apps/web          # Next.js tenant app
apps/worker       # BullMQ worker
packages/domain   # Pure TS engine + RBAC
packages/db       # Drizzle schema / seed
packages/emails   # Email templates
docs/             # SYSTEM_PLAN, PLATFORM_FRAMEWORK (engineering)
docs-site/        # This VitePress user documentation
presentation/     # Stakeholder slide deck
scripts/          # tenant:create, prod DB pull, fixtures

Conventions ​

  • Prefer small, focused changes
  • Keep example school data out of product defaults
  • Match existing naming, types, and UI patterns
  • Update docs-site/ when user-facing behaviour changes
  • When adding user-facing capabilities, add a matching AI assistant tool (or an unsupported allowlist entry) in the same change set. See Assistant and the repo rule ai-capability-parity.
  • Keep presentation/index.html consistent with docs/SYSTEM_PLAN.md when product decisions change

Checks before opening a PR ​

bash
pnpm test
pnpm docs:build
pnpm --filter @schoolrota/web lint   # if configured

Documentation screenshots ​

After UI changes, refresh screenshots using the checklist in scripts/capture-doc-screenshots.md.

SchoolRota documentation. Every slot covered, every day.