An in-browser spaced-repetition system.
Live Demo: https://thomasrribeiro.com/flashcards/
Review what's important and outsmart the forgetting curve.
- Node.js (v14 or higher)
- npm
Flashcards are written in markdown files using a Q:/A: or C: format.
Question/Answer Cards:
Q: What is the capital of Italy?
A: Rome.Cloze Deletion Cards:
C: [Rome] is the capital of Italy.Each [text] in a cloze card creates a separate card where that text is hidden.
Supported Features:
- Multiline content - Questions and answers can span multiple lines
- LaTeX math - Use
$inline math$or$$display math$$for equations - Images - Embed with
 - Audio - Embed with

Organize your flashcards in public/collection/ with the following structure:
public/collection/
├── my-deck/
│ └── flashcards/
│ ├── topic1.md
│ └── topic2.md
└── another-deck/
└── flashcards/
└── cards.md
Each directory in public/collection/ becomes a separate deck. Place your markdown files in the flashcards/ subdirectory.
1. Install dependencies:
npm install2. Run the app:
npm run devOpen your browser to the URL shown in the terminal.
When running locally without GitHub authentication, your review progress is stored in localStorage only. This means:
- Progress is saved locally in your browser
- Your Free Spaced Repitition Scheduler (FSRS) will be lost if you clear browser data
- No cross-device sync
© 2025 by Thomas Ribeiro. Licensed under the Apache 2.0 license.
