Repository navigation
Code Deck Harness
A second entry beside the app, for composites that have no route yet. It renders
one case at a time under DeckScale, so a composite can be measured against the
design deck in a browser before a screen uses it. The production build never
includes it, and it has no package script and no committed spec.
A task adds one file, cases/<task>.tsx (for example cases/r4-02a.tsx), and
edits nothing else here. The file exports cases, a record from a case name to
a component that takes no props:
export const cases: Record<string, () => ReactElement> = {
"row-menu": () => <RowMenu>…</RowMenu>,
};It imports from @/ and nothing from the harness. The harness gives a case
DeckScale, the app's stylesheet and its translations, and nothing else: a case
that needs a router, a query client, a signed-in user or a registered content
element sets that up itself. Write a case that calls a hook as a named function
expression ("tabs": function DetailTabs() { … }), which keeps the hook and the
fast-refresh lint rules quiet.
index.html?case=<file>/<name> renders one case, for example
?case=r4-02a/row-menu. &width=<px> puts it in a container of that width.
With no case the page lists every case as a link. Theme and language are the
app's own localStorage keys, quizzivy.theme and quizzivy.locale.
From web/:
./node_modules/.bin/vite build --config tests/support/deck-harness/vite.config.ts
./node_modules/.bin/playwright test --config tests/support/deck-harness/playwright.config.tsThe second command serves the build on port 4175 and runs the throwaway specs
named tests/e2e/zz-harness-*.spec.ts; none is ever committed. To look at a
case by hand, serve the build with
pnpm exec vite preview --config tests/support/deck-harness/vite.config.ts and
open http://localhost:4175/tests/support/deck-harness/index.html. Delete
dist/deck-harness afterwards.
Generated from web/tests/support/deck-harness/README.md. Edit that file in the repository; changes made on this page are overwritten.
Generated from the repository's documentation on every push to develop.
Start here
Product
Implementation plan
- 00 Architecture overview
- 10 Phase 0: Scaffold and contract
- 11 Phase 1: Auth, join, shells
- 12 Phase 2: Admin authoring
- 13 Phase 3: Assign and take
- 14 Phase 4: Grade and results
- 15 Phase 5: Hardening
- 16 Phase 4.5: The student at a desk
- 17 Word import: milestone plan
- 18 Word import: teacher workflow
- 19 Versioned content contract
- 20 Data model
- 30 Risk register
- 40 Open items
- 50 Non-functional requirements
- 60 Backend architecture
- 91 September 2026 issue remediation
- 92 Student layouts and interaction rules
Redesign (Phase R)
- 70 Redesign overview
- 71 R1: Foundations (v0.7.0)
- 72 R2: Access (v0.8.0)
- 73 R3: Student console (v0.9.0)
- 74 R4: Teacher workspace (v0.10.0)
- 74d D4: Deck update (v0.11.0)
- 74e E1: Moving a question across a group
- 75 R5: Admin console and email (v0.12.0)
- 76 R6: Question types and scoring (v0.13.0)
- 77 R7: Collaboration (v0.14.0)
- 78 R8: Schedule (v0.15.0)
- 79 R9: Insights (v0.16.0)
- 80 R10: Learn (v0.17.0)
- 81 R11: Landing, leads, v1.0 (v1.0.0)
Setup and operations
- CI
- Deploying
- DNS for quizzivy.com
- Google OAuth client
- Production operations
- Cloudflare R2 bucket
- Word import worker
- R4 rehearsal on a Neon branch
Design
Team
- Agent team
- Verification environment
- Team ledger
- R4 readiness
- R4 verification strategy
- T-R4.51 browser verification
Code READMEs