Source code for saleEducation & coursesContent generationMobile apps
Shikomu
A Japanese tutor that knows what you know: stories at your level, conversations, reviews, and an AI teacher.
Shikomu is a Japanese tutor that keeps a model of every word, kanji and grammar point the learner has met, and builds everything around it: stories written at their level, conversations that steer toward what they're learning, reviews scheduled by a memory model, and a teacher they can talk to.
Features
- Reading. Generated stories (which can continue as chapters on a bookshelf), passages the learner brings in, and camera captures, all annotated the same way: words split with Sudachi, furigana where it's needed, grammar points found by pattern, and comprehension checks.
- Talking. Real-world scenarios (konbini, izakaya, clinic, a Discord chat) where the model plays the other side. Turns are graded as they go, and each conversation ends with a debrief.
- A teacher. A running lesson with a teacher that calls tools: looking things up, testing the learner, starting reviews and stories, and updating what it knows about them.
- Reviews. Cards for words, kanji and grammar, scheduled from the evidence of everything the learner does, with example sentences written for them.
- Kanji. Each kanji's radicals, named, and mnemonics written from them (or the learner's own).
- Voice. Sentences, words and the teacher's messages read aloud by ElevenLabs.
- iOS app. The site in a Capacitor web view, with push notifications and a badge.
- Safari extension. Annotates Japanese on any page, and brings pages in to read.
- An MCP server for the learner's own agents, and per-learner tracking of what model and voice calls cost.
Built with
Elixir and Ash (AshPostgres, AshAuthentication, AshOban, AshAi, AshTypescript, AshStorage), Phoenix, PostgreSQL and Oban; a React front end (TanStack Router and Query) over AshTypescript's RPC; and a Rust NIF for Sudachi. Anthropic's Claude writes and teaches; TypeSafe's Jev grades and judges.
What you need
Elixir 1.20 (OTP 29), PostgreSQL, Node and a Rust toolchain, plus API keys for Anthropic and TypeSafe (and ElevenLabs for audio). mix setup downloads and imports the dictionaries. It's set up to deploy to Fly.io, and the README covers configuration and deployment. The iOS app and the Safari extension need an Apple developer account.
Included, and not
Included: the full source of the server, web app, iOS app and Safari extension, with tests.
Not included: the dictionaries (JMdict, KANJIDIC2, KRADFILE, KanjiVG, Sudachi's dictionary and the frequency lists are downloaded during setup, under their own licences), WaniKani's radicals (if you have a WaniKani account, it can fetch them for your own use), or a hosted instance. It's built as a personal app: sign-up is limited to an allowlist of emails, and sign-in emails go to the log until you configure a mailer.
Services you'll need
To run it, you'll need an account with each of these, or to host them yourself.
The database: the catalog, learners' knowledge, texts, lessons and background jobs (Oban).
Claude writes stories, plays conversations, teaches, and writes example sentences and mnemonics.
Jev, an evaluation model, for judgments: grading answers and turns, and checking generated text.
- ElevenLabs ↗Optional
Reads sentences, words and the teacher's messages aloud.
- Fly.io ↗Optional
Hosting: it's configured to deploy there (fly.toml, Dockerfile), but runs anywhere a Phoenix release does.
Stores audio clips. Without it they're stored on disk.
- Apple Developer Program ↗Optional
Building and signing the iOS app and Safari extension, and an APNs key for push notifications.
License
It doesn't come with a license file of its own, so the standard license in Moatless's Terms applies: you can use and change the code, and build products with it, including commercial ones, but not resell or redistribute the code itself.
Sold by
Zach Daniel
@zachdaniel
- Rating
- None yet
- Buyers
- 2
- Codebases
- 2
- for sale
- Wishlisted
- 3
- times
Reviews
No reviews yet.
Releases
- v1.0.0Oct 26, 2026
The first release: the server and web app, the iOS app and the Safari extension. See the README to set it up.