Initial backlog
This backlog is intentionally starter-level. Stories are phrased to preserve modular boundaries (UI → application → domain → infrastructure).
Epic 0 — Foundation
- Monorepo scaffolding with pnpm + Turborepo
- Shared TypeScript/Tailwind/Vitest config packages
- Package boundary documentation and agent checklists
- CI workflow for lint/typecheck/test/build
- Docs site publishing workflow (GitHub Pages)
- Cloudflare app deployment workflow stub
- DB migration check workflow stub
- Introduce basic wiring pattern for use case invocation (no DB yet)
Epic 1 — Design system and shell
- Establish design tokens (colour, spacing, typography, radius, shadows)
- Create app shell layout (nav + main content)
- Define loading/empty/error/success UI patterns
- Create base components (Button, Input, Card, Badge)
- Add a “Visual atlas” page for documenting patterns/components
- Add accessibility baseline checks (keyboard/focus)
- Add responsive layout rules
Epic 2 — People
- Define People domain glossary alignment (roles and status)
- Implement
CreatePersonuse case (in-memory repo for tests) - Implement
UpdatePersonuse case - Implement
ListPeopleuse case - UI: People list page with empty/loading/error states
- UI: Create/edit person form with validation feedback
- Add basic People search/filter (name/status)
- Add People persistence (D1/Drizzle) behind repository port
- Add migration + seed for minimal People persistence
Epic 3 — Aircraft
- Define Aircraft domain rules (grounded protection and statuses)
- Implement
CreateAircraftuse case (in-memory repo for tests) - Implement
UpdateAircraftuse case - Implement
ListAircraftuse case - UI: Aircraft list page with status badges
- UI: Create/edit aircraft form
- Add grounded toggle with clear UI affordance
- Add Aircraft persistence (D1/Drizzle) behind repository port
- Add migration + seed for minimal Aircraft persistence
Epic 4 — Scheduling
- Define Booking invariants (time range validity, required assignments)
- Implement conflict detection (aircraft and instructor overlap)
- Implement
CreateBookinguse case (in-memory repo for tests) - UI: booking creation flow (select time, aircraft, instructor)
- UI: basic calendar view (day/week)
- Enforce grounded aircraft protection in booking creation
- Add scheduling persistence and conflict queries (D1/Drizzle)
- Add seed data for local scheduling demos
Epic 5 — Training-lite
- Define lightweight lesson model and key terms
- Implement
CreateLessonuse case (no billing) - Link lessons to bookings (optional)
- UI: student training overview (simple list)
- Add minimal training persistence stubs
Epic 6 — Compliance-lite
- Define compliance signals (currency, expiry, alert)
- Implement compliance rule evaluation (pure domain)
- Add placeholder compliance alerts output
- UI: compliance alerts list (read-only)
- Add persistence stubs for future requirements
Epic 7 — Billing-lite
- Define charge item and invoice draft primitives
- Implement invoice draft calculation stub (pure domain)
- UI: show “billing coming soon” placeholders in relevant flows
- Add persistence stubs for later billing work
- Add ADR for billing model if/when chosen
Epic 8 — Reporting-lite
- Define initial operational reports (utilization, bookings by aircraft)
- Implement basic export stub (CSV)
- UI: reports landing page (placeholders)
- Add persistence/query stubs for later reporting