Skip to content
Nonbiri

In development

Suji

One iPad app for studying Japanese, and for teaching it

Dictionary, kanji, grammar, reading, exam practice and spaced repetition in one offline-first native app, running on a single progress record. There is also a teacher side on the same data: assigned sets, homework, marking, scheduling and chat.

iPadOS · iOS · macOS

Tell me when it ships

What it does

01

Everything on one progress record

A normal setup is one app for spaced repetition, another for the dictionary, another for kanji, another for grammar, a reader for texts and a chatbot for explanations — all good tools that know nothing about each other. Suji keeps the same jobs in one offline app, sharing one set of progress data.

02

A teacher side on the same data

A separate six-section teacher interface behind the same login: class dashboard with at-risk grouping, homework builder and marking queue, recurring lessons with RFC 5545 scheduling, chat, and a library the teacher can author or import into.

03

Handwriting graded stroke by stroke

A Metal canvas reads Apple Pencil pressure, tilt and azimuth, then scores the trajectory against the KanjiVG reference with dynamic time warping — stroke order, direction, shape and placement. A magnet guides your hand and eases off as you improve.

04

Bring your own text

Morphological analysis splits the passage, tapping a word opens the offline dictionary, furigana is optional and per-word, and the grammar a sentence uses is picked out and linked back to the reference.

05

Import from a photo of a textbook

Four sources, one flow: camera or PDF through OCR, Anki decks, pasted text, or a link. Imported material is levelled against JLPT, enriched with readings and meanings, and turned into study sets and exercises.

06

Exam practice in the exam’s own format

JLPT, NAT-TEST, J.TEST and JFT-Basic, each with its own section structure and scoring. Fourteen JLPT question types, timed full simulations, and grading against per-section thresholds — failing one section counts separately from failing overall.

Why it exists

One progress model over a single event log, which is what lets forty-one kinds of activity share one record instead of each drill keeping its own score.

On iPad

01The day’s work on one screen
02Handwriting, graded stroke by stroke
03Reading with the dictionary attached
04Every item at its own stage
05The teacher’s register

What is in it

辞書 · reference
  • 13,108 kanji with readings, JLPT level, school grade, frequency and radical — 6,703 of them carrying stroke-order animation.
  • 19,450 mapped pairs of visually confusable kanji, used both as a study section and as the source of plausible wrong answers in exercises.
  • 14,487 kanji-to-component links, and 150 phonetic series turned into ready-made courses — every kanji read こう because of 工, in one set.
  • 31,151 dictionary entries and 157,696 glosses; 21,336 carry pitch accent, 30,035 example sentences come with them, and 613,270 proper-name readings sit in their own database.
  • 684 grammar patterns from N5 to N1 with 2,714 examples, a prerequisites graph, and an annotator that finds those patterns in whatever you are reading.
  • 236 ready-made courses and 30 content packs — JLPT levels, school grades, frequency bands, Osaka dialect, haiku, the road-rules deck.
  • None of it is fetched. Every reference screen works with the network off.
稽古 · practice
  • Forty-one kinds of exercise across cards, grammar, vocabulary, kanji, listening and reading — all writing to one event log, so one progress record covers them instead of each drill keeping its own score.
  • FSRS-5 scheduling with a five-stage lifecycle, and passive introduction kept separate from active recall.
  • Handwriting on a Metal canvas reading Apple Pencil pressure, tilt and azimuth, scored against KanjiVG with dynamic time warping — stroke order, direction, shape and placement.
  • A magnet in three strengths that decays attempt by attempt, a ghost trace that fades as you improve, and direction arrows that follow the curve of the stroke rather than pointing straight.
  • 33 conjugation forms with a dedicated drill, and a sentence builder checked first by local morphology and then by a model for naturalness.
  • Spoken conversation in six scenarios, with the vocabulary held to the learner's level rather than left to the model.
読解 · reading
  • Morphological analysis splits the passage; tapping a word opens the offline dictionary and adds it to a set.
  • Furigana off, unknown-only, or all — decided in one place rather than per screen. Line breaking is word-safe, which Japanese on the web usually is not.
  • Grammar patterns are annotated inline and linked back to the reference; sentences translate on demand.
  • Four import routes through one review-before-write wizard — camera or PDF through OCR, Anki decks, pasted text, or a link.
  • Imported material is levelled against JLPT, enriched with readings and meanings, and split into study sets and exercises.
試験 · exams
  • JLPT, NAT-TEST, J.TEST and JFT-Basic, each with its own section structure, thresholds and scoring rules.
  • Fourteen JLPT question types, and an N5 bank of 2,141 questions.
  • Section practice for one question type, or a full timed simulation with booklet and answer sheet.
  • Graded against per-section thresholds — failing one section is counted separately from failing overall, as it is on the day.
  • Question-by-question review afterwards, with the attempt history behind it.
教室 · classroom
  • A six-section teacher interface behind the same login, switched by role rather than by a second app.
  • A class register grouped by risk — who is steady, who is working, who is falling behind — with homework readiness and time since last active.
  • Recurring lessons with RFC 5545 rules and per-date exceptions; a lesson holds its preparation, the session and the homework that follows it.
  • A live lesson where the teacher pushes a kanji, a word or a text and it appears on the student's screen.
  • Homework built from study sets, drills, quizzes, tasks and reference material, with a marking queue and per-student progress.
  • Lesson chat and direct chat, attachments through an offline upload queue, and a library the teacher can author or import into.
  • Access is scoped by row-level security to the teacher-student relationship — one teacher cannot reach another's students.
補助 · assistance
  • On-device models where they are enough, cloud only where they are not — and the controls disappear where no model is available rather than sitting there dead.
  • A student assistant grounded on the bundled dictionary and grammar rather than on recall, aware of what you are studying and what you missed last session.
  • A teacher co-pilot working from real progress snapshots — who has slipped, what to assign, where the group makes the same mistake.
  • Everything runs through the studio's own proxy, so no key ships in the client.

How it’s built

Native Swift 6 under strict concurrency, built as an umbrella package of forty-odd modules with boundaries between the domain core, the persistence layer and the UI. Work goes into a local SQLite database first and reconciles to Supabase through an outbox queue, so the app keeps working on a train.

The reference content is bundled rather than fetched — 13,108 kanji with 6,703 stroke-order glyphs, 31,151 dictionary entries, 684 grammar patterns and 613,270 proper-name readings ship inside the app. Repetition is FSRS-5 over a single event log, which is what lets one progress model serve forty-one kinds of activity instead of each drill keeping its own score.

Still in development. The scope above is larger than one person finishes quickly.

  • Swift 6
  • SwiftUI
  • GRDB / SQLite
  • Supabase
  • FSRS-5
  • Sudachi
  • Apple Vision
  • FoundationModels
  • PencilKit
  • Metal

FSRS-5

An open spaced-repetition scheduler, now in its fifth revision. Anki ships it too, so a card’s difficulty here means the same thing it means there.

KanjiVG

The open stroke-order dataset the handwriting grader scores against. It is also why 6,703 of the 13,108 kanji animate and the rest do not — that is the coverage of the data, not a shortcut.

Sudachi

The morphological analyser that splits Japanese into words. Japanese is written without spaces, so nothing else on the reading screen can happen until this step does.