online
Fumitabi
Super-app per imparare il giapponese parlato, pensata per diventare operativi prima e durante un viaggio.
https://app.fumitabi.com-
500
episodi del corso
-
10.210
vocaboli insegnati
-
300
letture graduate
-
36
scenari di conversazione a voce
Il problema
Diventare operativi in giapponese parlato prima e durante un viaggio richiede più fronti insieme: capire e rispondere a voce, ricordare nel tempo quello che si impara, leggere, scrivere a mano, seguire la grammatica. Le app li trattano come prodotti separati.
Cosa ho costruito
Fumitabi li integra in un unico Learning Engine. Il corso è una visual novel in cinquecento episodi, con scelte, missioni e vocaboli agganciati al dialogo, e intorno ci sono le conversazioni con personaggi AI su trentasei scenari (ordinare, chiedere aiuto, un’emergenza), parlate a voce nel browser con riconoscimento e sintesi; il ripasso spaziato; la scrittura a mano di kana e kanji con verifica dei tratti; trecento letture graduate per livello JLPT; un grammar lab da diciannove sezioni (particelle, contatori, keigo, pitch accent); l’import di video da YouTube con sottotitoli sincronizzati e furigana; un dizionario da oltre 165.000 voci. È una PWA: funziona offline, con una coda di sincronizzazione su IndexedDB.
Cosa c’è dentro
Il giapponese scritto non separa le parole: l’analisi morfologica passa da SudachiPy, non da un tokenizzatore a spazi. Le chiamate AI passano da un budget giornaliero per utente, prenotato in modo atomico con uno script Lua su Redis: se Redis non risponde, il sistema rifiuta invece di concedere chiamate non contabilizzate. La misura del cantiere:
| Cosa | Quanto |
|---|---|
| Righe di Python | 80.000 |
| Righe di TypeScript | 65.000 |
| Endpoint API | 227 |
| Migrazioni di schema | 47 |
| Test, fra backend e frontend | 3.149 |
La parte difficile
Correggere la scrittura a mano senza un modello addestrato apposta. La verifica è geometria pura: i tratti dell’utente, campionati punto per punto, confrontati coi tracciati SVG di KanjiVG, 11.661 caratteri. Il caso che rompe tutto è il tratto fuso: due tratti scritti in uno che una distanza ingenua giudica «quasi giusti». Il rilevatore che li riconosce è stato calibrato sui kanji del livello N5, e la taratura sta scritta nel codice insieme ai suoi risultati sul set di prova: prima dell’ipotesi «tratto saltato», un’omissione su otto passava per buona; dopo, nessuna.
Stack
- Python 3.12
- FastAPI
- SQLAlchemy 2 async
- Postgres
- Redis
- ARQ
- Claude API
- SudachiPy
- React 19
- TypeScript
- Vite
- Tailwind 4
- TanStack Query
- PWA (Workbox)