German Learning Workstation
A personal learning system designed for daily use rather than as a generic course platform. It is the natural evolution of my earlier German-learning app: a full local workstation with a reviewed content pipeline, a deliberately bounded practice loop and offline operation.
01 · Problem
What needed solving
General learning platforms did not match the vocabulary I needed, the mistakes I repeated or the mix of screen practice, audio and paper exercises that helped me study consistently.
Build for a real personal need, observe where practice breaks down and let those sessions—not a speculative feature list—shape the product.
02 · Constraints
The difficult parts
- Combine a large language corpus with a review process that keeps source and provenance visible.
- Grade small spelling and morphology differences without treating every near-answer as simply right or wrong.
- Keep speech, study data and progress available offline on modest ARM hardware.
- Support screen study and printable worksheets without maintaining two separate content systems.
03 · Approach
How the work was structured
- Structured vocabulary, grammar and phrases across CEFR levels behind one reviewed data model.
- Built a spaced-review loop inspired by SM-2 and several recognition and production exercise types.
- Used Damerau–Levenshtein distance to distinguish exact, close and incorrect answers while keeping the rule understandable.
- Added offline speech through Piper, print worksheets, Anki export and hard-word reporting.
- Deployed the service natively on ARM64 with systemd, kiosk startup, WAL-mode storage and verified backups.
04 · Validation
What can be claimed now
The backend has 179 automated tests, supported by frontend tests. The reviewed store currently contains roughly 32,800 vocabulary entries and 203,900 examples, each with field-level provenance records.
The workstation is in active personal use as a dedicated local kiosk. It brings review, exercises, audio, exports and printable study material into one workflow without sending learning history to a cloud service.
05 · Learning
What the project clarified
- A local-first constraint can improve a product by forcing clear ownership of data and graceful offline behaviour.
- Content provenance is a product feature when a learning system combines several sources.
- The most useful exercise engine reflects how errors differ, not just whether a string matches.