A self-hosted Japanese immersion hub for serious learners.
One place to read. One place to track. One place to grow.
What is Mikiri? Β· Current State Β· Planned Modules Β· Getting Started Β· Philosophy
θ¦εγ (mikiri) β a martial arts term meaning "to see through", to discern with precision.
Serious Japanese learners don't use one tool. They juggle Anki, subtitle files, browser extensions, OCR tools, manga readers, and half a dozen bookmarks β none of them talking to each other. Mikiri's goal is to pull that into a single, self-hosted hub where your immersion data actually connects: what you've read, what you've watched, what words you already know, and how much of any given content you can understand right now.
The reference point is what LingQ does β but open source, free, privacy-first, and built around the tools that Japanese learners actually use.
π§ Early-stage, active development. The UI and core screens exist. The modules are being built one at a time. This readme reflects what is real today and what's planned β nothing more.
| Feature | Status |
|---|---|
| Home dashboard with library cards | β UI done |
| Reader screen | β UI done |
| Authentication (NextAuth) | β Working |
| Design system (sakura dark theme) | β Done |
| Analytics page | π¨ Structure only |
| Backend (Prisma + DB) | π¨ In progress |
| Real data connected to UI | π¨ In progress |
Mikiri is being built as a collection of modules, each one adding a new content type to the hub. Every module shares the same vocabulary and tracking layer β so progress in manga counts alongside anime, which counts alongside reading.
Local manga library connected to a folder on disk. No uploads, no cloud sync β the app reads directly from files on your machine.
- Library view showing available series and volumes
- Per-volume info: cover, chapter count, OCR status
- Reader that opens processed HTML files generated by Mokuro
- Future: easier download organization and in-app OCR processing
Current status: File API spike done (browser β local files access confirmed). Building from scratch.
Built-in reader with EPUB and PDF support. Reading progress connects to the vocabulary system.
Local video player with subtitle support. Auto-import subtitles from Jimaku.
Import transcripts and subtitles. Use them as reading material or to build vocabulary decks.
Track Spotify and YouTube as audio immersion sources. Listening time feeds into your immersion log.
Import what you already know from Anki, JPDB, or Jiten. Coverage stats reflect your actual level. Mine new words with one click back into Anki.
All modules feed into a single tracker. See your total immersion by day, week, and month β across every content type.
| Layer | Technology |
|---|---|
| Framework | Next.js (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS + custom design system |
| Database | PostgreSQL via Neon |
| ORM | Prisma |
| Auth | NextAuth.js |
| Package Manager | pnpm |
| Deploy | Vercel |
Prerequisites: Node.js 20+, pnpm 9+, a Postgres database (Neon free tier works)
git clone https://github.com/mph7/mikiri.git
cd mikiri
pnpm install
cp .env.example .envEdit .env:
DATABASE_URL="postgresql://..."
NEXTAUTH_SECRET="your-secret"
NEXTAUTH_URL="http://localhost:3000"npx prisma generate
npx prisma migrate dev
pnpm devOpen http://localhost:3000.
Your reading history is personal. Your vocabulary list is a map of how far you've come. That data belongs to you.
Mikiri runs on your hardware, stores data locally, and will always be free and open source. The goal is to reduce friction between you and the content β not to be another subscription you have to manage.
The aesthetic matters too. When you're reading for hours, the environment you read in makes a difference.
Early days, but contributions are welcome. Areas where help is especially useful:
- Japanese tokenization (kuromoji, MeCab)
- EPUB parsing and rendering
- Mokuro HTML reader pipeline
- AnkiConnect integration
git checkout -b feat/your-feature
git commit -m "feat: your change"
git push origin feat/your-feature
# open a PR describing what changed and whyMIT β use it, fork it, host it, make it yours.
θ¦εγ β To see through. To cut clean.
πΈ