Upstream projects
YatoGaku is built on top of existing open source Japanese learning tools rather than an invented UI or a rewritten SRS engine. This file records which projects were selected, why, their license, and where their code lives in this repo. Every license claim here was checked against the actual LICENSE file content in the upstream repo, not the license badge or the repo description.
Site shell / UI base: Docusaurus
- Repo: https://github.com/facebook/docusaurus
- License: MIT (verified against
LICENSEat repo root) - Maintained by: Meta, 65,900+ stars, commits as recent as this week
- Why: Docusaurus is a real, widely used, human designed documentation site generator with sidebar based lesson navigation, dark mode, search, and mobile responsive layout out of the box. It has official first party support for building and deploying to GitHub Pages. Using it as the site shell means the grammar lesson path, the resource index, and the dashboard all sit inside a real, already designed interface instead of one built from scratch.
- Where it lives: the site root (
docusaurus.config.ts,sidebars.ts,src/,docs/) will be the Docusaurus project itself once scaffolded in Task 2. Custom pages (dashboard, drill launchers) are added as Docusaurus React pages/components, not a separate framework bolted on top of it.
Kana trainer: vedxyz/kana
- Repo: https://github.com/vedxyz/kana
- Live demo: https://vedxyz.github.io/kana/ (already deployed as a static GitHub Pages site, proving the build output works there)
- License: MIT (verified against
LICENSEat repo root, copyright Ved, 2023) - Stack: React + TypeScript + Vite + Mantine UI + wanakana (kana/romaji conversion, itself MIT licensed)
- Maintained: last push 2026-08-07, actively developed, 35 stars
- Why: covers hiragana and katakana training with multiple practice modes, is a real finished app (not a toy), builds to static output, and its React/Vite stack integrates cleanly alongside a Docusaurus site as a separately built sub-app.
- Where it will live: vendored under
apps/kana/as a subtree/vendored copy of the upstream source, built independently, output copied into the Docusaurus static build under/apps/kana/at deploy time (Task 2/3).
Kanji, vocabulary, grammar reference, and SRS: VictorAurelius/2026-Smart-Quiz
- Repo: https://github.com/VictorAurelius/2026-Smart-Quiz
- Live demo: https://victoraurelius.github.io/2026-Smart-Quiz/ (already deployed as a static GitHub Pages PWA)
- License: MIT (verified against
LICENSEat repo root, copyright Smart Quiz contributors, 2025-2026) - Stack: SvelteKit 2, Svelte 5, TypeScript strict, Tailwind,
@sveltejs/adapter-static(prerendered static output, no server required), Vitest with 973 passing tests, Playwright e2e tests - Maintained: last push 2026-07-08, created 2026-02-10
- Why: this is the closest match found to the objective's kanji/vocab/grammar/SRS requirement in a single project. It already ships JLPT N5 through N1 kanji with stroke order, a searchable grammar reference, JLPT vocabulary, flashcard/multiple-choice/typing quiz modes, SM-2 based spaced repetition with leech detection, and full timed JLPT mock exams, all offline-first and installable as a PWA. Building this from scratch, as multiple separate homemade features, is exactly what the objective prohibits.
- Language caveat, investigated and mostly resolved across two later key results: this app's data ships bilingual Japanese/Vietnamese content by default, but investigation found every
VocabItemandGrammarItemalso carries a real, fully populatedenglishfield (confirmed 0 empty entries across all 25 N5 minna lessons, N4/N3/N2 course lessons, and kanji N1-N3 data), and the direction system (quizUtils.ts) already had correctja-en/en-jahandling built in. The gap was that the lesson-page practice selector never exposed an English option and defaulted to Vietnamese. Fixed: added the English option, made it the default (Vietnamese options kept, not removed). UI chrome translated to English: the persistent sidebar nav, the settings page, the home page (hero and tools list), the breadcrumb/page-title system (routeMeta.ts, affecting every workspace route), the error page, the quiz results page, and the kanji library page. Remaining known gaps, left deliberately: the Conversations feature (110 dialogue patterns) has no English field in its data type at all, Vietnamese only, and was not translated, since writing 110 dialogue translations under time pressure without review risks the kind of invented/rewritten content this project avoids elsewhere; individual lesson titles (both grammar course lessons and kanji lessons) carry an embedded Vietnamese subtitle baked into their data, which is content rather than UI chrome and was left alone for the same reason. Seeapps/quiz/VENDORED.mdfor the exact diffs and reasoning. - Where it will live: vendored under
apps/quiz/as a subtree/vendored copy of the upstreamsvelte-app/source, built independently, output copied into the Docusaurus static build under/apps/quiz/at deploy time (Task 2/3).
Grammar explanation sources
Per the objective, grammar explanations are not rewritten. Grammar lesson pages in this site link out to (or embed via iframe where the source's terms allow it) the existing explanations rather than restating them:
- Tae Kim's Guide to Japanese Grammar: http://www.guidetojapanese.org/learn/
- Imabi: https://imabi.org/
- Tofugu grammar reference: https://www.tofugu.com/japanese-grammar/
Listening/reading resources are linked the same way (NHK lessons, Erin's Challenge), and dictionary lookup links out to Jisho. None of these are copied into this repo; the grammar lesson pages built in later key results are index pages that organize links to these sources by JLPT level, plus a short factual note on what each lesson covers, not a rewrite of the explanation itself.