Skip to content

About

Full-stack Basque language learning app: Flutter desktop frontend, FastAPI backend, and Python NLP layer with spaced repetition (SM-2), similarity-based writing evaluation, and an offline Helsinki-NLP neural translator

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Basque Learning Tool

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

What it does

  • 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.

How it's built

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.

Running it

pip install -r requirements.txt
uvicorn api.main:app --port 8000      # terminal 1
flutter run -d linux                  # terminal 2

Or streamlit run frontend/app.py for the prototype. Needs Python 3.10+ and the Flutter SDK.

What's next

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).

About

Full-stack Basque language learning app: Flutter desktop frontend, FastAPI backend, and Python NLP layer with spaced repetition (SM-2), similarity-based writing evaluation, and an offline Helsinki-NLP neural translator

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages