# learn-afaan-oromo
A Duolingo-style app for teaching Afaan Oromo to English-fluent kids (15 and under).
Two parts: a content pipeline that turns open dictionary data into reviewable unit word
lists, and a Next.js PWA that drills those words. The word lists are still an unreviewed
draft — the app says so on every screen until a fluent speaker signs them off.
## How the content is produced
```
kaikki.org Oromo JSONL content/curriculum.ts
(open lexicon) (authored teaching order)
\ /
npm run draft:units
|
content/units/*.yaml review/ .csv
(draft, unreviewed) (for a fluent speaker to correct)
```
The lexicon supplies Oromo↔English glosses, IPA and native-speaker audio; the curriculum
supplies which English concepts are taught, in which unit, in which order. A dictionary is
not a curriculum, so the two are kept separate on purpose.
## Running the app
```bash
npm install
npm run dev #
localhost
```
Unit YAML and mirrored audio are committed, so the app runs without regenerating content.
DEPLOY.md walks through building it, putting it on a phone and deploying.
Progress (XP, streak, spaced-repetition schedule) is stored in `localStorage` only: no
accounts, no server, no analytics, nothing about a child leaves the device.
Lessons are 10 prompts drawn from four exercise kinds — English→Oromo choice, Oromo→English
choice, listen-and-choose (only for words with a recording), and type-the-word.
Words due for review lead the lesson; a miss resets its interval so it returns the same day.
## Recording the missing words
About half the vocabulary has no Wikimedia recording, so `/record` (dev only) walks through
exactly those words and captures a clip per word straight into `public/audio/recorded/`,
listed in `content/recordings.json`. Commit both; the listening exercises then use a family
voice wherever no licensed native clip exists. `ffmpeg`, if installed, transcodes the take
to mp3 so iOS can play it. The r …