Flashcards Anywhere is a lightweight, self-hosted flashcard app for efficient study and spaced repetition. Featuring a Node.js backend, Electron desktop app, and a fast, modern frontend, it lets you create, review, and organize decks of flashcards from any device. All data is stored locally, giving you full control and privacy. Ideal for language learners, students, and anyone who wants a distraction-free study tool.
Features:
- Create, edit, and delete flashcards and decks
- Spaced repetition scheduling (SRS) for effective memorization
- Clean, responsive web interface
- No sign-up or cloud required—your data stays on your machine
- Node.js 18+ and npm installed
- From the project root:
npm install(first time only)npm run start:server
- Open
http://127.0.0.1:8000in your browser.
- From the project root:
npm install(first time only)npm start
GET /api/decks→{ decks: [{id, name}] }GET /api/cards?deck=Name→{ cards: [...] }POST /api/decksbody:{ name }POST /api/cards:- Flip:
{ type: 'basic', front, back, deck? } - MCQ (single):
{ type: 'mcq', front, choices: string[], multi: false, answer: number /* 0-based */, deck? } - MCQ (multi):
{ type: 'mcq', front, choices: string[], multi: true, answers: number[] /* 0-based */, deck? }
- Flip:
PUT /api/cards/{id}body:{ front?, back?, deck?, choices?, answer?, answers?, multi? }(type is immutable)DELETE /api/cards/{id}
- On first run, a project‑local database is created at
data/flashcards.dbwith aDefaultdeck and a few sample cards. - To change port, set
PORTenv var before running (e.g.,PORT=3000). - To change DB location, set
DB_PATHto a writable path; it overrides the defaultdata/flashcards.db.
- Card text renders as limited, safe HTML (e.g., Japanese furigana with
<ruby>/<rt>). - Allowed tags:
b, strong, i, em, u, s, br, p, ul, ol, li, code, pre, ruby, rt, rb, rp, span, h1, h2, h3, h4, h5, h6, font. - Allowed attributes:
<font>:color(named color or hex),size(1–7),face(simple font list).
- Other attributes are stripped; scripts, images, links and event handlers are not allowed.
- Cards are strictly one type:
basic(Flip) ormcq(Multiple Choice). - Type is immutable after creation. To switch type, create a new card.
- Basic cards cannot set
choices/answer(s)/multi. - MCQ cards cannot set
backtext. - MCQ supports single- or multi-answer via
multiflag. Response includesmulti,answer(for single), andanswers(array).