32 lines
2.5 KiB
Markdown
32 lines
2.5 KiB
Markdown
# 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.mjs` pure helpers.
|
||
- Implement `scripts/build_grade3_catalog.py` to inspect every Grade 3 archive from `download-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.py` with static-file serving, a catalog endpoint, and a constrained ZIP-PDF route based only on IDs present in `data/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.
|