A language-learning app where you learn by typing what you hear: play a clip, read the expected sentence, type it, get instant feedback. Thai is the first dataset; the app is designed for any language.
docs/— how to develop, deploy, and translatespecs/— background docs: mission, roadmap, tech stackopenspec/specs/— normative behaviour specssrc/backend/— Django + Strawberry GraphQLsrc/frontend/— Vue 3 + Vite + Pinia + Tailwinddata/— corpus and generated data, git-ignored
You need kind 0.33+, tilt, kubectl, helm, direnv, and Docker or rootless
Podman. With Podman, first run export KIND_EXPERIMENTAL_PROVIDER=podman.
direnv allow
kind create cluster --config "$(scripts/kind-config.sh --write)"
tilt upThe app is then at http://localhost:8500. To load exercises, point
TYPELEARN_CORPUS_DIR at a Common Voice release before creating the cluster and
press Ingest the corpus in the Tilt UI.
Development mode, tests, debugging and running several worktrees are covered in docs/development.md. Installing on a real cluster is in docs/deployment.md.
Help translate TypeLearn on Hosted Weblate. You don't need to open a pull request: Weblate commits your translations and opens it for you. Any text not translated yet shows in English.
To change the English wording or add a language, see docs/translation.md.
The exercise clips and their sentences come from Mozilla Common Voice's Thai dataset: sentences read aloud by volunteers and released into the public domain under CC0. The clips aren't stored in this repository; they are loaded from a local copy of the dataset (see Running it locally). You can record or check Thai sentences for the dataset at commonvoice.mozilla.org/th.
AGPL-3.0-or-later — see LICENSE. Running a modified copy of this project as a network service still requires offering that copy's source to its users.