Fathan Margono
BACK TO WORK

§ CASE STUDY

Ajile

Another Japanese Immersive Learning — offline-first Japanese study on the desktop with Tauri, React, SQLite, SRS scheduling, kana drills, decks, Rust-side tokenization, and a local bridge for immersive browser-extension capture.

ReactTauriTailwind
Ajile

Ajile

Ajile — Another Japanese Immersive Learning

Landing page

ajile.fmgono.dev

Project overview

Ajile (Another Japanese Immersive Learning) is a native desktop experience for Japanese study, built because most tools either trap you online, bundle a heavyweight runtime, or skim past how Japanese text actually behaves. The stack is intentional: Tauri for a small native shell using the OS webview, React and TypeScript on the frontend, Rust for persistence and language tooling, and SQLite so decks, stats, and review history stay on your machine.

The app emphasizes offline-first learning, spaced repetition tuned for retention, structured kana work, richer flashcards driven by typed content, pathways to migrate from Anki (including apkg import handling documented in-repo), morphological helpers for segmentation and readings, text-to-speech hooks where useful, and a local HTTP bridge so a companion browser extension can send immersive reading material back into the same SRS brain.

Tech stack (high level)

UI. React, Vite, Tailwind, ShadCN-style primitives (Radix), Neobrutalism-inspired styling.

Desktop. Tauri 2, Rust (IPC, filesystem, shell, SQLite via rusqlite).

Japanese. Tokenization and dictionary paths (for example Lindera and WASM IPADIC in the pipeline), wanakana for kana conversion.

Data. Local SQLite as the source of truth; import paths for existing deck ecosystems.

What I’m exploring with this project

Shipping a serious language-learning surface on the desktop without Electron’s footprint, keeping ownership of data, and wiring immersive web reading into one offline-capable review loop — from kana drills through long-form imports and extension-driven capture.