2.5 KiB
Grade 3 Curriculum Showcase Implementation Plan
For Hermes: Build the showable local demo task-by-task with test-first checks.
Goal: Turn the downloaded Grade 3 Core Knowledge collection into a private local library that exposes every available unit, its student resources, and its teacher-guide PDFs, while keeping the interactive equal-groups session as a concrete lesson example for Alicia.
Architecture: A local Python server serves the existing static interactive session and a generated Grade 3 catalog. The catalog is derived directly from the verified download manifest and ZIP contents; teacher/student PDFs stay inside their original ZIP archives and are streamed only on demand, avoiding copied curriculum files. The interface uses browser-only state and no accounts or learner-data storage.
Tech stack: Python stdlib (http.server, zipfile, json), PyMuPDF for PDF page metadata, vanilla HTML/CSS/JavaScript, Node’s built-in test runner.
Task 1: Derive a Grade 3 catalog from verified downloads
- Add a failing test for grade filtering, subject classification, and teacher-guide detection.
- Implement
src/catalog.mjspure helpers. - Implement
scripts/build_grade3_catalog.pyto inspect every Grade 3 archive fromdownload-manifest.json, recording unit title, source archive, internal PDFs, material roles, and PDF page counts. - Generate
data/grade3_catalog.json.
Task 2: Stream original PDFs without copying curriculum
- Add a failing server test for a manifest-known PDF route and an unknown/traversal-style route.
- Implement
server.pywith static-file serving, a catalog endpoint, and a constrained ZIP-PDF route based only on IDs present indata/grade3_catalog.json.
Task 3: Add a Grade 3 library and teacher-plan view
- Add a failing browser-independent test for filtering by subject and selection state.
- Extend the local UI with a Grade 3 library showing every catalogued unit, student resources, teacher guides, source/licensing notice, and one selected teacher-plan preview.
- Link teacher guides to the constrained streaming route and retain the first interactive math session as an explicit classroom activity.
Task 4: Verify the demo
- Run catalog generation, all tests, server route checks, browser learner flow, and accessibility audit.
- Demonstrate responsive library browsing and a teacher guide opening in the browser.
- Stop the temporary local server after the demonstration; do not bind to the LAN or store learner data.