Files
FamReynaBrain/projects/ckmath-interactive-pilot/docs/plans/2026-09-09-grade3-showcase.md
T
2026-09-14 22:38:47 -04:00

32 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.