Milestone 4: Hand-off & Roadmap¶
Status: Tracking. Phases 11–12 cover the testing & CI gate and the documentation hand-off; this milestone also lists the creator/marketplace feature proposals that have not been committed to a numbered phase.
Reading guide: Detailed phase prose lives in
reference/implementation.md. Detailed feature proposals live inroadmap.md. When this milestone disagrees with either, treat them as authoritative.See also:
- Part 1: Foundational — Project scaffold, design system, persistence, Auth.js, email.
- Part 2: Core Application — Schemas/CMS client, public site, enrollment, entry pagination.
- Part 3: Operationalization — Quiz, dashboards, errors/security, well-known files.
- Roadmap — full creator/marketplace feature catalogue (F1–F15) and documentation backlog.
Overview¶
This milestone closes the V1 build (testing & CI, documentation drift correction) and surfaces the creator/marketplace feature backlog that should drive the next round of product work.
Dependency order
Phase Checklist¶
| Phase | Title | Status | Source |
|---|---|---|---|
| 11 | Testing & CI | [ ] | Phase 11 |
| 12 | Documentation & Hand-off | [ ] | Phase 12 |
Phase 11 — Testing & CI¶
Goal: enforce regressions cannot land.
- Vitest with happy-dom; coverage thresholds for
src/db/queries,src/lib/cms,src/auth, schemas, and 100% file coverage onsrc/components/**(every component has a co-located test, enforced by a CI check that fails when a.tsxlacks a sibling.test.tsx). - Playwright with
DATA_DIR=./data/test, project-level seeds, unique resource names per test. - Suites:
- Component (per-component Vitest specs — already required in every phase; this is the aggregate run).
- Auth (sign-in, redirect, role gates).
- Enrollment (enrol, idempotency, tenant isolation).
- Entry pagination + gating.
- Quiz (pass, fail, retry exhaustion).
- Admin (promotion, audit visibility).
- i18n smoke — each locale renders home + sign-in; assert at least one Spanish-only key renders on
esto prove the locale switcher is wired. - i18n regression — visit each top-level route on
esand assert no English-locale-only string fromen.jsonappears in the rendered HTML. - Theme smoke — each top-level route renders in light, dark, and system with
prefers-color-schemetoggled at the Playwright level. - WCAG sweep with
@axe-core/playwrightin both light and dark.
- CI workflow runs
npm run verify && npm run test:unit && npm run test:components && npm run test:e2e. scripts/check-i18n.mjs(run from rootnpm run check) greps for unwrapped JSX/aria/placeholder strings and diffs key sets acrossmessages/*.json. See Root Scripts Reference.
Reference detail: reference/implementation.md — Phase 11, reference/tech-stack.md, .cursor/rules/030-testing.mdc.
Phase 12 — Documentation & Hand-off¶
Goal: reference docs, generated documentation, and hand-off notes stay aligned with the implemented product.
- Update reference docs in
apps/lms/docs/reference/with realised behaviour where implementation diverged from the design specs. The current authoritative docs are not stubs; this phase is for drift correction, examples, and any implementation-specific decisions discovered during the build. - Run
npm run docs:check(Zensicalinvalid_linksmust pass). - Append OpenAPI / Swagger pointers to root
.cursor/rules/050-apis.mdcand verify the Phase 10.5 well-known surface matches the rule's caching policy table exactly. - Final
npm run verify(check + build + docs:check).
Reference detail: reference/implementation.md — Phase 12, root .cursor/rules/100-documentation.mdc.
Creator / Marketplace Feature Backlog (F1–F15)¶
These features are proposals, not binding specs. Full descriptions, rationale, and implementation pointers live in roadmap.md. Prioritisation should be revisited when the V1 build (Phases 0–12) is complete.
| ID | Feature | Priority | Source in roadmap |
|---|---|---|---|
| F1 | Course Completion Certificates | High | F1 |
| F2 | Learner Reviews & Star Ratings | High | F2 |
| F3 | Course Discovery — Search & Filtering | High | F3 |
| F4 | Creator / Instructor Public Profile | High | F4 |
| F5 | Free Preview Entries | High | F5 |
| F6 | Notification System | Medium | F6 |
| F7 | Pricing Flexibility — Coupons & Discounts | Medium | F7 |
| F8 | Video Lesson Support | Medium | F8 |
| F9 | Assignment Submission System | Medium | F9 |
| F10 | Course Prerequisites | Medium | F10 |
| F11 | Learning Paths / Course Bundles | Medium | F11 |
| F12 | Student Q&A per Entry | Low | F12 |
| F13 | Social Sharing & Referral Tracking | Low | F13 |
| F14 | Subscription / All-Access Pass | Low | F14 |
| F15 | Offline Access / PWA Content Download | Low | F15 |
Adoption of any item promotes it from this backlog into a numbered phase appended to reference/implementation.md. Until then, do not fold roadmap items into the V1 plan unless separately approved.
Hand-off Verification¶
npm run verify— clean.npm run docs:publish— Zensical site rebuilds;apps/lms/public/docs/updates.- Manual readout: index → milestone 1–4 → reference → guides → admin pages all link without 404s.
- Open the published Zensical site (
/docs/) and walk top-level nav: every entry resolves.