Skip to content
sayre4uxPublic

About

Local-first, offline-capable PWA for drilling exam question banks (CISSP and beyond). No backend, no account — import any bank, study, track mastery.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

Quizer

Local-first exam trainer. Import any question bank, study offline, track mastery.

No backend. No account. Everything stays in your browser.

Try the live demo | Get started | Create a question bank


Timed exam simulation with focused navigation
Import a question bank    Structured study modes    Mastery analytics

Study modes — Drill with instant feedback. Simulate timed exams. Review mistakes. Schedule with SM-2 spaced repetition. Revisit flagged questions.

Analytics — Per-category radar, per-topic mastery, weak-area detection, readiness tracking. Know exactly where you stand.

AI second opinion — Banks can carry an optional AI analysis per question: a recommended answer and a short explanation in its own section, flagged where it disagrees with the source key. Grading always uses the source answer.

简体 / 繁體 — Chinese banks can be shown in Simplified or Traditional characters (character-level conversion, exam terms unchanged).

Offline-first — Full PWA with service worker. Install to home screen, study on a plane. New versions install themselves, with a short What's new note.

Private by default — Zero telemetry, no third-party requests. The only later fetches are update checks and, for Chinese banks, the app's own script dictionaries. Your progress never leaves your device.


Skip the setup. Try it now.

Open Quizer in your browser →

Load the demo bank and start drilling in seconds. Works on desktop and mobile.
No install, no sign-up, no data leaves your device.

Install as an app on your phone

Quizer is a PWA — it works offline and feels native once installed.

  • iOS — Open the link in Safari, tap the Share button, then Add to Home Screen.
  • Android — Open in Chrome, tap the three-dot menu, then Add to Home Screen (or accept the install banner).

Once installed, it launches fullscreen with its own icon — no browser bar, no tabs.


Run it yourself (local / self-host)

You don't need this to use Quizer — the hosted demo above is the full app. This section is for running it locally or self-hosting your own copy (development, private deployment, or contributing).

Requires Node ^20.19.0 || >=22.12.0.

git clone https://github.com/sayre4ux/quizer.git
cd quizer/app
npm ci
npm run dev      # local dev server — open the printed URL

Then Add a question bank and select a .quizbank.json or .quizbank.zip file, or load the bundled demo bank to look around.

Self-hosting

Quizer is a fully static PWA — no server, no env vars, no database. Build it and serve the app/dist/ folder from any static host (Vercel, Netlify, Cloudflare Pages, GitHub Pages, nginx, …):

cd app
npm run build    # outputs static assets to app/dist/
npm run preview  # preview the production build locally

All commands

Command What it does
npm run dev Start the local dev server
npm run build Type-check + production build (outputs app/dist/, generates PWA service worker)
npm run preview Serve the production build locally
npm test Run the test suite (vitest)
npm run lint ESLint

Bring your own questions

Have your own question set (CSV, Anki export, docs, slides, markdown, even screenshots)? Turn it into an importable bank.

With an AI agent (recommended)

quizbank-author ships as a Claude Code plugin. Install it once, then just ask your agent to convert your file — it handles the interpretation, validation, and packaging for you:

/plugin marketplace add sayre4ux/quizer
/plugin install quizbank-author@quizer

Then: "Convert my questions.csv into a Quizer bank." The agent extracts answers from your source (it never invents them), validates the structure, and produces a .quizbank.json/.quizbank.zip you can import.

Want a second opinion on the answers? The format has an optional per-question ai field (see SCHEMA.md). It is added in a separate step you ask for explicitly, never during conversion, and never changes the source answer.

Manually (CLI)

Prefer to do it yourself? The same tooling runs standalone:

cd quizbank-author
npm ci

# validate
node scripts/validate-quizbank.mjs quizbank.json --assets assets --report conversion-report.json

# package
node scripts/pack-quizbank.mjs quizbank.json --assets assets --report conversion-report.json --out mybank.quizbank.zip

See quizbank-author/README.md for the full workflow and references/SCHEMA.md for the format spec.

Architecture

quizer/
  app/               Vite + React 19 + TypeScript + Tailwind v4
  quizbank-author/   Standalone bank conversion + validation tool

The authoritative quizbank v1 spec lives in app source: format.ts (types + limits) and validate.ts (rules). The authoring tool's validator is a faithful port, kept in lockstep by a parity test.

Contributing with an AI coding agent? See AGENTS.md for build/test commands, conventions, and the security boundary to respect.

Star History

Star History Chart

License

MIT

About

Local-first, offline-capable PWA for drilling exam question banks (CISSP and beyond). No backend, no account — import any bank, study, track mastery.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages