Minimal local-first exam software built with Vite, React, and TypeScript.
The public repo contains the software only. It does not include bundled exam questions, proprietary PDFs, or derived exam datasets. You import your own validated exam packs locally.
- Runs exams in
exammode with a timer - Runs
practicemode with no timer and answer reveal - Saves sessions locally so you can reopen them later
- Lets you flag questions and retake only flagged questions
- Lets you review currently incorrect questions mid-session
- Lets you save an optional checkpoint before switching into a filtered review flow
- Supports light mode and dark mode with a strict black/white interface
cd app
npm install
npm run devcd app
npm run lint
npm test
npm run build- Convert your source material into the normalized question JSON described in
docs/ingestion-pipeline.md. - Build an app-compatible pack with
scripts/build_exam_pack.py. - Validate the pack with
scripts/validate_exam_pack.py. - Import the resulting
.exam.jsonfile through the app UI.
- Private source PDFs and extracted datasets are ignored by the repo.
app/public/exams/catalog.jsonis intentionally empty in the public repo.- If you keep local exam packs next to the app, do not remove the
.gitignorerules unless you intend to publish them.