Skip to content

Repository files navigation

Andiamo banner

Andiamo

CI License: MIT Expo dev client Python 3.13

A language learning funnel for adults grinding toward the Italian B1 certification. Read more about it here, including my motivations.

Maintained by @dgrissen2.

What Andiamo is

Most language tools optimize for recognition — can you pick the right answer? — but the B1 exam, and real life, demand production: the word has to come out of your mouth while a cashier waits. Andiamo was built by someone learning Italian as an adult who does not love learning languages, to close that gap and to fix a second problem: your vocabulary lives scattered across workbooks, PDFs, podcasts, articles, and chat apps, and none of it talks to each other.

The fix is one stubborn idea: every useful word or phrase you meet goes into the same funnel. Not everything deserves a flashcard — most words are tourists — but the ones that matter get captured, enriched, triaged, reviewed, heard in context, and then forced back out of your mouth or fingers until they stick. That funnel is the whole product.

What you can do

Andiamo is four surfaces over one shared funnel:

  • Capture from anywhere. Grab a word or phrase by typing or speaking it in the mobile app, or by selecting text on any web page or PDF with the Chrome extension — articles, worksheets, whatever you are reading.
  • Auto-enrich and triage. Each capture is enriched with a translation, example sentence, and verb analysis, then automatically prioritized as Core / Plus / NA by a fast, cheap LLM so you are not drilling the fifth way to say "instead."
  • Review for recognition. A familiar SM-2 spaced-repetition flow (Again / Hard / Good / Easy) with examples and hints — plus a lookup-decay penalty so words you keep re-checking don't quietly count as "known."
  • Drill conjugation. Production-first conjugation practice for the B1 tenses (yes, the subjunctive) in the web console, generated from your own due words.
  • Listen in context. Generate AI-native dialogues between Italian speakers for key B1 scenarios, with synced captions and comprehension quizzes.
  • Stay honest. A focus timer tracks time across activities, and a small web console handles batch cleanup and admin.

Audio uses real Italian voices; conjugation is grammatically guaranteed by a local library rather than an LLM. See Architecture for how the funnel and the model routing actually work.

Andiamo mobile app: lessons, audio, exercises, dictionary, review, timer, and settings

Capturing a word from an Italian news article with the Andiamo Chrome extension

The Andiamo conjugation drill in the web console

Quickstart

Setup is handled by a guided interactive installer that provisions a server key, deploys the backend to Fly.io, and wires up the app and extension:

cp .env.example .env        # add your provider keys
scripts/deploy_andiamo_interactive.sh

Live features need paid (but low-cost, pay-as-you-go) accounts. You will need keys for:

  • OpenAI — lesson + exercise generation, Whisper · sign up
  • Groq — cheap, fast word triage / B1 classification · sign up
  • ElevenLabs — Italian TTS voices · sign up
  • Fly.io — backend hosting (Docker + small volume) · sign up

Cost is a design constraint, not an afterthought: Groq handles the high-volume classification, GPT-4o is reserved for the hard generation, conjugation never calls an LLM, the Fly machine scales to zero when idle, and a daily spend cap is baked into the deploy. The full walkthrough — every installer step, every key, and the cost knobs — is in docs/quickstart.md.

Mobile

The app uses native modules, so it runs as an Expo dev client, not Expo Go. You don't build it by hand — the installer's Deploy iPhone app step runs the deploy script for you:

app/deploy.sh                       # or menu item 4 in the installer
app/deploy.sh --device "iPhone 15" --clean-prebuild

app/deploy.sh loads your env, bakes in the remote backend URL and passcode, and runs the iOS dev-client build. See docs/mobile.md.

Documentation

  • Quickstart — accounts, keys, and the guided installer
  • Configuration — environment variables and the server key
  • Architecture — how the funnel, models, and storage fit together
  • API — backend REST reference
  • Mobile app — building and deploying the iOS dev client

Status

This public repository is generated from a private development repo through a sanitized export pipeline. Do not add secrets, personal learner data, real provider dashboards, or maintainer-specific deployment config.

License and assets

Code is MIT licensed. See LICENSE. Default media assets are covered in NOTICE.

About

A language-learning funnel for the Italian B1 certification — mobile app, Flask backend, Chrome extension.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages