Interactive Amharic course: Fidel chart, conjugation lab, spaced repetition, and a Wax & Gold decoder.
# የአማርኛ ማዕከል · Amharic Fluency Lab
An interactive Amharic course that runs in a single HTML file: from the Ge'ez script to
C1/C2 literary reading, including a Fidel chart with stroke-order animation, a verb
conjugation lab with live root highlighting, a Leitner spaced-repetition engine, a
phonetic Fidel keyboard, and a ሰምና ወርቅ (Wax & Gold) poetics decoder.
## Running it
```bash
cd amharic-fluency-lab
python3 -m http.server 8000
# then open
localhost
```
Opening `index.html` directly with `file://` also works in most browsers, but a local
server is more reliable: some browsers refuse to resolve an import map from a `file://`
origin.
The first load needs an internet connection, because React, Tailwind, Framer Motion and
the Babel JSX compiler are pulled from CDNs (there is no build step and no `npm install`).
All *content* — every Fidel mapping, vocabulary entry, conjugation table, dialogue,
proverb, verse and reading passage — is local in `data/`, so once the page is open the app
works with no further network traffic, and all progress is stored in `localStorage`.
No Amharic system voice? The audio falls back to an articulatory synthesiser built on
WebAudio: a consonant gesture (burst, friction, nasal buzz or glide at the correct place
of articulation) followed by a vowel made of two band-passed formants. It is good enough
to drill the seven vowel orders and the ejective/plain contrasts, and it is labelled
honestly in Settings as not being a native speaker.
## Publishing it
Every path in the app is relative, so it can be served from a subdirectory
(`
username.github.io`) without changes. There is no server, no
build output and no secret to keep, which makes any static host sufficient.
```bash
./tools/deploy-pages.sh ~/.amharic-lab-token
```
The script authenticates, creates the repository, commits, pushes to `main` and switches
on GitHub Pages. The token is read from the file rather than passed as an argument, so it
never reac …