Lani:用 Claude Code 驱动的斯洛文尼亚语像素村庄学习游戏
fentas/lani
Lani 是一款 Android 像素村庄游戏,通过村民对话、场景互动和随进度解锁的语法书学习斯洛文尼亚语,背后由 Claude Code 会话充当私人导师,自动生成对话、故事和练习。
Learn Slovene by living in a little village. Lani is an Android game with a pixel-art village whose people speak to you, a tutor that knows what you got wrong yesterday, and a grammar book that opens as you go. Behind it runs a Claude Code session: your own tutor, which writes new dialogs, stories and exercises for you as you progress.
→ lani.page for a tour with pictures.
Lani is in early, active development and is used daily by one learner (Jan). Slovene is the first language; Italian (Friuli), German (Kärnten) and English (Lakeland) villages exist for visits.
What's in it
- The village. A dozen villagers with their own days: the farmer in his field, the smith at his forge, Stari Janez telling a legend by the fire every evening. They ask you for help in Slovene; what you build with their requests grows the village.
- Scenes and dialogs. Close-up scenes (the kitchen, the fire, the field) where you find the words in the picture, play I spy with the village's children («Vidim, vidim nekaj, česar ti ne vidiš …») and talk to people. Dialog turns adapt to you: choose, tap the picture, type the missing word, or say it.
- A grammar book that grows with you. The six cases, aspect, the dual: a page opens when you're ready for it, the dialogs only ask for what you've met, and your mistakes show up on the rule's page.
- Words that stay. Spaced repetition (SM-2) in many forms: flashcards, listening, dictation, speaking, and once you know a word, its conjugations and cases as the grammar book opens them. Your words come back in the dialogs too: a turn that asks for one of them counts as its review, and the tutor writes them into the day's conversations.
- Stories and a notebook. Legends told in chapters by the fire (Martin Krpan, Zlatorog, Peter Klepec), each written down in a hand-drawn notebook with sketches.
- In the car. An Android Auto mode with listening drills, echoes and quick responses for long drives.
- A tutor you can talk to. The app's chat goes to your Claude Code session: ask about any exercise, bookmark an answer, reply to a message from last week.
How it works
Android app ──HTTP/SSE──► bridge (Bun/TS) ──MCP channel──► Claude Code session (your tutor)
│ └─ skills: lani-*, lani-studio
└─ your data: progress, mistakes, reviews, village (JSON, on your machine, in git)
companion/android/— the app (Kotlin, Jetpack Compose); the village, scenes and people are drawn in code.companion/bridge/— the bridge: serves the app, keeps your data, and lets the tutor publish content.companion/cultures/,companion/scenes/,companion/grammar/— the villages, scenes, stories and grammar pages..claude/— the tutor's skills and hooks;LEARNING_SYSTEM.mdis its method.
Run it yourself
You need a machine that stays on (Linux or macOS), Claude Code with a Claude plan or API key, Bun and an Android phone. A wizard sets up the rest in about 15 minutes:
git clone https://github.com/fentas/lani.git && cd lani companion/bin/lani-setup # the learner, their data, a private remote, voices, network, pairing
It keeps the learner's data outside the checkout, as a git repository of its own (~/.local/share/lani/<id>),
committed after each session. Run it again to change anything. The guide, and the steps by hand:
docs/setup.md; what leaves your machine: docs/privacy.md; when something is off:
docs/troubleshooting.md. Everything else (pairing, Tailscale, voices, speech recognition, the
bridge as a service, backups) is in companion/README.md. The tutor also works on its own, in the
terminal: docs/claude-tutor.md.
The app: install lani-<version>.apk from the releases, and let your
bridge offer the next ones as updates with companion/bin/release-app --github. Or build it yourself in Docker, with
no JDK or Android SDK: companion/bin/lani-build-app --release (an app built with your own key updates only from
your own builds).
Contributing
Corrections to the Slovene are especially welcome: much of the content is machine-written and marked so until a native speaker has read it. See CONTRIBUTING.md.
Licence
Lani is free software under the GNU Affero General Public License 3.0 or later. It began as a fork of m98/fluent (MIT); the parts from it stay available under MIT as well (an install from the time it was called Fluent moves over with docs/migrate-from-fluent.md). Dictionary data from Wiktionary (CC BY-SA 4.0), the Kalam font (OFL) and the synthesized sounds (CC0): see NOTICE.md.
来源:GitHub · github.com



