Roadmap: phase 4 re-scoped to import only (migration already applied), phase 3 gains prompt templating, wordlist dedup, structured output, raw-response persistence, and validation tests; idempotency decision documented (skip already-staged words, one transaction per word). Stale paths, postgres setup, and file structure corrected. STATUS.md: refreshed from stale 2026-05-15 Kaikki state to current gemini-only pipeline work. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
46 lines
3 KiB
Markdown
46 lines
3 KiB
Markdown
# Status — 2026-08-09
|
||
|
||
> Last updated: 2026-08-09. Update this file after every deploy or when switching tasks.
|
||
|
||
## What Works Today ✅
|
||
|
||
- **Singleplayer quiz** — Duolingo-style, 5 language pairs (en↔it/de/es/fr), 3 or 10 rounds, POS + difficulty filters
|
||
- **Multiplayer** — Create/join lobby by room code, 2–4 players, simultaneous answers, 15s server timer, live scoring, winner screen
|
||
- **Auth** — Google + GitHub via Better Auth, cross-subdomain cookies, session middleware on protected routes
|
||
- **Deployment** — Live at lilastudy.com, Hetzner VPS, Caddy HTTPS, Docker Compose, CI/CD via Forgejo Actions
|
||
- **Database** — PostgreSQL with Drizzle ORM, daily backups, idempotent seeding
|
||
|
||
## What's Broken / Blocked 🚧
|
||
|
||
- **Data quality** — Production still uses OpenWordNet/OMW translations. The replacement is the Gemini-only pipeline on branch `refactor/gemini-only-pipeline`: the sense-based schema (`words` → `senses` → `translations`) is migrated but empty, and the pipeline itself is not built yet. The earlier Kaikki/local-LLM pipeline was abandoned and removed (docs in `documentation/archive/`).
|
||
- **Guest play** — Auth is required for all game routes. No try-before-signup flow.
|
||
- **Game session store** — Still in-memory (`InMemoryGameSessionStore`). Valkey container exists in local dev but not wired up.
|
||
- **Rate limiting** — Partially implemented on auth endpoints; game endpoints not yet covered.
|
||
- **React error boundaries** — Not implemented; runtime crashes take down the whole app.
|
||
- **Monitoring** — No uptime alerts or centralized logging on the VPS.
|
||
|
||
## What I'm Working On Now 🔄
|
||
|
||
**Primary:** Phase 3 of the Gemini-only data pipeline (see [pipeline/roadmap.md](pipeline/roadmap.md)): template the Gemini prompt, write the validation module + `pipeline.ts`, and run the first full staging pass (~1,600–1,800 deduped nouns × 5 languages into SQLite).
|
||
|
||
**Secondary:** Phase 7 hardening backlog items (see BACKLOG.md `next` section).
|
||
|
||
## Next 2-Week Goal 🎯
|
||
|
||
Finish pipeline Phase 3 (full noun run staged in SQLite, reject rate < 10%, 50 entries spot-checked) → Phase 4 import script (pipeline Postgres :5433, then dev :5432) → start rewriting `getGameTerms`/`getDistractors` against the new schema.
|
||
|
||
## The Big Picture
|
||
|
||
Lila is a **deployed, working vocabulary quiz app**. The core loop (singleplayer + multiplayer) is solid. The next strategic milestone is **media-based practice** (learn vocab from a song/TV episode/book chapter), but that depends on:
|
||
|
||
1. The Gemini data pipeline reaching production (fixes translation quality)
|
||
2. A media ingestion prototype (subtitles/lyrics → text → vocab extraction → quiz)
|
||
|
||
Until then, the app is a generic vocabulary quiz — functional but not differentiated.
|
||
|
||
## Quick Links
|
||
|
||
- [BACKLOG.md](BACKLOG.md) — Prioritized tasks (`now` / `next` / `later`)
|
||
- [DATA_PIPELINE.md](DATA_PIPELINE.md) — Pipeline orientation and current progress
|
||
- [pipeline/roadmap.md](pipeline/roadmap.md) — Phase-by-phase pipeline plan
|
||
- [DEPLOYMENT.md](DEPLOYMENT.md) — Infrastructure ops
|