A simple, fast flashcards app for studying with spaced repetition. The entire
app is a single self-contained index.html (vanilla JS, no build step), so it
runs anywhere you can serve a static file.
- Organize cards into decks grouped by subject
- Two card types: basic (front/back) and fill-in-the-blank
- Spaced-repetition scheduling, with a "Study due" queue
- Inline images in cards (stored per-deck)
- Light and dark themes (dark by default) and a compact density mode
- Automatic persistence — your decks live in the browser's own storage (IndexedDB, with a localStorage fallback) and are restored every time you reopen the app; no manual saving needed
- Export / Import to JSON for backups or moving data between devices
index.html # the entire app — markup, styles, and vanilla JS (no build step)
serve.js # zero-dependency static server (Node stdlib only)
exports/ # sample JSON exports you can Import to try the app
.claude/ # editor launch config (runs serve.js)
- Node.js 14 or newer (no npm install required — the server uses only Node's built-in modules)
A small zero-dependency server script, serve.js, is included.
From the project root:
node serve.jsThen open http://localhost:4173 in your browser.
To stop the server, press Ctrl+C.
The port defaults to 4173. Override it with the PORT environment variable:
PORT=8080 node serve.jsOn macOS / Linux you can also run the script directly (it is marked executable):
./serve.jsDecks and cards are saved automatically in the browser you open the app in.
Because the data is tied to that browser's storage for localhost, clearing
site data or switching browsers starts you fresh. Use the Export button to
save a backup, and Import to restore one. Sample exports live in the
exports/ folder.
