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 (engineering)
docs-site/        # This VitePress user documentation
presentation/     # Stakeholder slide deck
scripts/          # tenant:create and 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
  • 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.