A desktop app for learning Basque (Euskara), built during a year as an English language assistant in the Basque Country. Basque is a language isolate with ergative alignment, agglutinative morphology and a large case system, so most of an English speaker's effort goes into endings: a noun phrase takes its case suffix once, at the end, and the verb agrees with up to three arguments. The app drills exactly that, with spaced-repetition vocabulary and an offline translator alongside.
Flutter (desktop) · FastAPI · Python · Hugging Face Transformers
- Declension drills for nouns across the grammatical cases, and conjugation drills
- Vocabulary flashcards scheduled with SM-2 spaced repetition
- Reading comprehension, with your summary scored by semantic similarity to a reference
- Writing practice, checked by translating your Basque and scoring it against the intended meaning
- Grammar explanations in plain English, with examples for each case and structure
- Translator between Basque and English, on Helsinki-NLP's opus-mt models, downloaded once and run locally: no internet or API key needed
The linguistic data (declensions, conjugations, vocabulary, explanations) lives in data/, separate
from the code, with the aim of adding other morphologically rich languages later.
A Flutter desktop app (lib/) talks to a FastAPI server (api/, a REST API with docs at /docs),
which calls the Python backend (backend/) for data loading, SM-2, evaluation and translation. The API keeps the backend independent of the interface; the original Streamlit prototype
(frontend/) still works against the same backend.
pip install -r requirements.txt
uvicorn api.main:app --port 8000 # terminal 1
flutter run -d linux # terminal 2Or streamlit run frontend/app.py for the prototype. Needs Python 3.10+ and the Flutter SDK.
An Android build, sentence-building and listening practice, better writing evaluation, and a standard data format so other low-resource languages can be added. Building this taught me how much NLP tooling assumes Indo-European morphology, with little training data and few pre-trained models for a language like Basque. That's the kind of problem I want to keep working on.
Licence: MIT (LICENSE).





