Repository navigation
ADR Index
github-actions[bot] edited this page Oct 24, 2026
·
4 revisions
Source of truth: this wiki page.
Every architecture decision record in the repo's docs/adr folder. Each one has its own page.
- ADR-0001: Build with Flutter
- ADR-0002: Use the operating system's TTS, behind an interface
- ADR-0003: GPL-3.0 with an App Store Distribution Exception
- ADR-0004: Decks are YAML files in git
- ADR-0005: SM-2 scheduling over an append-only review log
- ADR-0006: Every interface string is a token, from the first screen
- ADR-0007: State reaches widgets through AppScope, with no package
- ADR-0008: Features without a backend are built and shown disabled
-
ADR-0009:
scriptis an open list, checked with a warning - ADR-0010: Vocabulary is taught along a shared path of themes
- ADR-0011: Generated numbers are spelled from each language's rules, and not logged
- ADR-0012: Revising a finished deck is not logged
- ADR-0013: Each course is taught along a curated path, as data
- ADR-0014: Speaking is drilled through the phone's own speech recogniser
- ADR-0015: A language's sound contrasts live in a file of their own
- ADR-0016: Each script has a guide to its recurring features
- ADR-0017: The app checks GitHub for updates and installs them itself
- ADR-0018: A card id names the language, and a word is one card
- ADR-0019: Reading comprehension is passages whose questions are scheduled like cards
- ADR-0020: Decks a learner adds are kept apart, and paths place them by wildcard
- ADR-0021: Reports go from a bug icon on every screen, by the reporter's mail, into GitHub issues
- ADR-0022: Answers typed in Latin letters are graded against the reading, in the language's scheme
- ADR-0023: A language can be learned without its alphabet
- ADR-0024: New words come in a daily lesson, and every drill has more kinds of question
- ADR-0025: Readings use ISO 15919 letters as the word is said, with the IPA beside them
- ADR-0026: Every card has a speaker, words can play by themselves, and sound can be switched off
- ADR-0027: Each language's icon is the first letter of its own name
- ADR-0029: Quick revision revises known words, and records only the misses
- ADR-0030: Today's skill tiles start a review of their skill, and quick revision can take one
- ADR-0031: What's new shows GitHub's release notes, fetched when the page opens
- ADR-0032: A word in match pairs says itself when tapped, by a switch of its own that is on by default
- ADR-0033: FSRS in place of SM-2
- ADR-0034: Recognition, Hear, Say and Write: four schedules per word
- ADR-0035: FSRS fitted to each learner, per language and skill
- ADR-0036: Decks are a core and layers, with rules, bases, typed notes and a B1 plan
- ADR-0037: Decks download from main, by an index, and update when asked
- ADR-0038: Reviews become proposals in the decks, and agreement merges them
- ADR-0039: Questions are derived from card data
- ADR-0040: Decks are CC BY-SA 4.0; the app's code stays GPL-3.0
- ADR-0041: The IPA is taught as a language, as one course
- ADR-0042: Script fonts are downloaded per course
- ADR-0043: English Braille is a notation course, typed on the app's own keyboard
- ADR-0044: Documentation lives in the wiki, mirrored from the repo by a workflow
- ADR-0045: A path sets its own level sizes, and a level counts roots only
- ADR-0046: A lesson takes the next eligible items, and a sentence waits until its words and rules are known
See also: Contributing · ADR-Index · Home
1. Learner guides
- Learner Guide
- Getting Started
- Today and Daily Lessons
- Drills and Skills
- Courses and Paths
- Proficiency Levels
- Scripts and Readings
- Readings ISO 15919
- Speaking and Listening
- Progress and Stats
- Profiles and Settings
- Backup and Restore
- Reporting a Problem
2. Deck building guides
- Deck Building Guide
- Deck Format
- Romanising Indic Languages
- Deck Licences and Quoted Books
- Deck Tools
3. Review guides
4. Translation guide
5. Building on iOS
6. Roadmap
7. Sources and attributions
8. Contribution and agentic coding