A French & Afrikaans spaced-repetition learning PWA (React, FSRS, CEFR A1–B2)
# Lingua
Eine mobile-first Sprachlern-PWA für Französisch und Afrikaans: echtes Spaced Repetition (FSRS),
Häufigkeits-Vokabular zuerst, aktives Erinnern in jeder Übung. Kein Backend, keine Accounts, kein
App Store, alles läuft auf dem Gerät.
A mobile-first language-learning PWA for French and Afrikaans, built around real spaced repetition
(FSRS), high-frequency vocabulary first, and active recall in every exercise. No backend, no
accounts, no app store: everything runs on the device, progress lives in IndexedDB, and it installs
straight from Safari.
Live demo: `lingua.oliverhoffmann.net` (private, password-protected — access on request).
## Screens
## What it does
- Real FSRS spaced repetition (`ts-fsrs`), scheduling every card on the device
- CEFR-structured content from A1 to B2: vocabulary plus a full grammar syllabus
- Ten exercise types: multiple choice, flashcard, listening MC, type-the-translation, cloze, and
the grammar drills (fill-blank, ordering, transformation) with presentation intros
- A session planner that interleaves new intros, reviews, and grammar, throttles new items against
the review backlog, and adapts to a casual, serious, or intensive intensity
- Installs as a PWA, works offline, and exports all progress to a single backup file
## Content in this repo
The full app carries around 7,000 lexemes (French and Afrikaans, A1 to B2). **This public repo
ships a small A1 demo pack** (150 seed words per language plus the full grammar syllabus) so the app
runs and the test suite passes out of the box. The full multi-band packs are not distributed here:
their French CEFR banding leans on a source licensed for non-commercial use only, so those packs
stay in the private build. Each pack states its sources in its `license` field.
## Run it
Needs Node 23+ (the content scripts rely on native TypeScript type stripping; Node 24 recommended).
```bash
npm install
npm run dev # dev server,
localhost
```
Quality gates:
```b …