Teacher Dashboard
The school wifi drops and the lesson still starts at 8:40. A dashboard that opens from disk doesn't care.
- JSON Schema
- Node.js
- Vanilla JavaScript
The classroom problem
Every teaching day opens with two questions: what’s on for each class, and what to print before the bell. A hosted dashboard answers both until the wifi drops. One classroom already runs the answer — a Python script that generates a single offline HTML file, opened from disk. That file’s whole course lives inside the script that generates it. Handing the tool to a second teacher means editing Python.
The design decision
One JSON file holds the course. One schema describes that file. The renderer and the validator both read the schema, so they stay in step. Content and code, finally separate.
Two other designs got part-built and dropped: an AI-prompt importer and a guided form. Both put a layer between a teacher and the one file that matters.
How it works
One file goes in and three kinds of page come out — a dashboard, a year calendar, and a page per lesson carrying its objectives and timings. Nothing is typed twice.
A course can be half-written: a unit can be a title and a lesson count, and the calendar still places it. The build checks the file against the schema and names the lesson when something’s wrong. It bundles into one downloadable file, every page inside it — which is where this started.