A German A1/A2 flashcard learning app for speaking practice. See the English prompt, attempt the German translation aloud, reveal the answer, and mark correct or incorrect. Uses spaced repetition (SM-2) so stronger cards appear less often.
- Spaced Repetition: SM-2 algorithm schedules reviews so you focus on words you find difficult
- Speaking Practice: Say the German translation aloud before revealing the answer
- Progress Tracking: Cards are categorized as New, Weak, Learning, or Strong
- Session-Based Learning: Review up to 20 cards per session
- Dark Mode: Automatic support for light and dark themes
- Keyboard Shortcuts: Press
Spaceto reveal,1for correct,2for incorrect - Offline Ready: All vocabulary stored locally in-browser
- Node.js v20 or higher
- npm (comes with Node.js)
git clone <repository-url>
cd hilf
npm installStart the development server:
npm run devOpen http://localhost:5173 in your browser.
npm run buildThe built files will be in the dist/ directory.
npm run preview- React + TypeScript
- Vite for fast development and builds
- Tailwind CSS v4 for styling
- supermemo for SM-2 spaced repetition
- A1 Base Words: ~583 cards from the Goethe-Institut A1 wordlist
- Source: patsytau/anki_german_a1_vocab
- Future: A2, grammar decks (dative, Perfekt, etc.)
To regenerate A1 vocabulary from source:
node scripts/parse-a1-vocab.mjssrc/
├── components/ # React UI components
├── hooks/ # Custom React hooks
├── lib/ # Core logic (SRS, scheduler)
└── vocabulary/ # Vocabulary data and types
Contributions are welcome! Feel free to open issues or submit pull requests.
The app automatically deploys to GitHub Pages on push to main via GitHub Actions.