# Persian Language Tutor ## Overview Gradio-based Persian (Farsi) language learning app for English speakers, using GCSE Persian vocabulary (Pearson spec) as seed data. ## Tech Stack - **Frontend**: Gradio (browser handles RTL natively) - **Spaced repetition**: py-fsrs (same algorithm as Anki) - **AI**: Ollama (fast, local) + Claude CLI (smart, subprocess) - **STT**: faster-whisper via sttlib from tool-speechtotext - **Anki export**: genanki for .apkg generation - **Database**: SQLite (file-based, data/progress.db) - **Environment**: `whisper-ollama` conda env ## Running ```bash mamba run -n whisper-ollama python app.py ``` ## Testing ```bash mamba run -n whisper-ollama python -m pytest tests/ ``` ## Key Paths - `data/vocabulary.json` — GCSE vocabulary data - `data/progress.db` — SQLite database (auto-created) - `app.py` — Gradio entry point - `db.py` — Database layer with FSRS integration - `ai.py` — Dual AI backend (Ollama + Claude) - `stt.py` — Persian speech-to-text wrapper - `modules/` — Feature modules (vocab, dashboard, essay, tutor, idioms) ## Architecture - Single-process Gradio app with shared SQLite connection - FSRS Card objects serialized as JSON in SQLite TEXT columns - Timestamps stored as ISO-8601 strings - sttlib imported via sys.path from tool-speechtotext project