Open-source project
lingdojo/kana-dojo avatar
lingdojo/kana-dojo

KanaDojo: A Next.js Japanese Learning Platform That Puts Customization First

Aesthetic, minimalist platform for learning Japanese inspired by Duolingo and Monkeytype, built with Next.js and sponsored by Vercel. Beginner-friendly with plenty of good first issues - all contributions are welcome!

3,393 stars3,300 forksTypeScriptAGPL-3.0

At a glance

What is it?
KanaDojo is an open-source, web-based Japanese learning app inspired by Duolingo and Monkeytype. It offers three training dojos, four game modes, and deep theming, but its AGPL license and contribution-focused design shape who should adopt it.
Who is it for?
Adopt KanaDojo if you are a Japanese learner who values a highly customizable, ad-free practice environment and are comfortable with a web app that tracks progress and streaks. It is also a strong choice for developers wanting to contribute to a beginner-friendly open-source project with clear documentation.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What KanaDojo Solves and Who It Serves

KanaDojo targets a specific gap in Japanese learning tools: most apps either lock content behind subscriptions or present a cluttered interface. This project aims to be an aesthetic, minimalist, and highly customizable platform, drawing inspiration from Duolingo for gamification and Monkeytype for clean design. It is for learners who want to practice Hiragana, Katakana, Kanji, and vocabulary without ads or paywalls, and for developers who want a real-world Next.js codebase to contribute to. The README explicitly welcomes complete beginners, with a dedicated guide that walks through creating a GitHub account and opening a first PR. That dual audience, learners and contributors, shapes the entire project, from its documentation structure to its feature set.

The Mechanics: Three Dojos, Four Modes, and Data Pipelines

The core training loop is built around three dojos: Kana, Kanji, and Vocabulary. Each dojo offers four game modes: Pick, Reverse-Pick, Input, and Reverse-Input. Pick likely presents a prompt and multiple choices, while Input requires typing the answer, and the reverse variants swap the direction between Japanese and English or romaji. The README does not detail the exact flow, but the mode names imply a systematic variation that forces active recall rather than passive recognition. Under the hood, the app relies on several Japanese language libraries: Kuroshiro for text conversion and romanization, Kuromoji for tokenization, and Wanakana for kana and romaji transliteration. Data comes from JMdict for dictionary entries, KANJIDIC for kanji readings, and JLPT resources from Jonathan Waller and jlptsensei.com. This combination suggests that the app fetches or bundles dictionary data and processes it client-side, though the README does not specify the data flow. The use of Zustand for state management and Framer Motion for animations points to a reactive, client-heavy architecture, which is typical for a typing-heavy practice tool.

Getting It Running: Commands and Configuration

The Quick Start is straightforward: clone the repository, install dependencies, and start the dev server. The exact commands are: git clone https://github.com/lingdojo/kana-dojo.git, cd kana-dojo, npm install, and npm run dev. Then open http://localhost:3000. For validation before submitting a PR, the project provides npm run check, which presumably runs linting, type checking, and tests. The README links to a Troubleshooting Guide, but its contents are not included here, so if you hit an issue, that document is the first place to look. The tech stack is Next.js 15, React 19, TypeScript, Tailwind CSS, shadcn/ui, Zustand, and Framer Motion. No environment variables or configuration keys are mentioned in the README, which suggests a zero-config setup for local development. That simplicity is a plus for beginners, but it also means you may need to dig into the architecture docs to understand how to customize data sources or add new features.

Customization as a Core Feature, Not an Afterthought

The README boasts 100+ themes and 28 Japanese fonts, which is a level of customization that rivals Monkeytype, a known leader in typing test personalization. This is not just cosmetic; the UI Design documentation covers theming, styling, and component guidelines, indicating that the theming system is a deliberate architectural component. For learners, this means you can adjust contrast, font style, and color scheme to reduce eye strain during long practice sessions. For developers, it means there is a defined pattern for adding new themes or fonts, which is a good entry point for contributions. However, the README does not specify how themes are selected or whether they are persisted locally or synced to an account. Given the use of Zustand, state is likely client-side, so themes may not sync across devices unless there is a backend, which is not mentioned. That is a limitation to verify if you plan to use multiple devices.

Progress Tracking and Gamification: Streaks and Achievements

KanaDojo includes statistics, streaks, and 80+ achievements, borrowing the gamification loop from Duolingo. This is a significant feature because it creates a habit-forming feedback cycle. The README does not explain how streaks are calculated or whether they reset after a missed day, but the presence of such a feature implies a daily check-in mechanism. Achievements add long-term goals beyond daily practice, which can keep advanced learners engaged. The data for these metrics is presumably stored locally, given the lack of a mention of a backend or user accounts. That raises a question: if you clear your browser data, do you lose your progress? The README does not address this, and it is a real concern for learners who invest months into streaks. Unlike Duolingo, which syncs progress to a cloud account, KanaDojo appears to be a purely client-side app, so progress may be tied to the browser's local storage. This is a trade-off between privacy and persistence that users should consider.

Limitations and When It Is the Wrong Tool

The most obvious limitation is the lack of a mobile app. The README claims the app is fully responsive on desktop, tablet, and mobile, but a web app cannot match the offline capabilities or push notifications of a native app. If you practice on a commute without internet, KanaDojo will not work. Another limitation is the AGPL-3.0 license. While this is fine for personal use and learning, it is restrictive for companies that want to build a proprietary product on top of the code. AGPL requires that any modified version distributed over a network be made available under the same license, which is a deal-breaker for many commercial projects. Additionally, the README does not provide any information about the accuracy or completeness of the vocabulary and kanji data. It credits JMdict and KANJIDIC, which are comprehensive, but the JLPT level mapping comes from third-party sites that may not align perfectly with official JLPT lists. If you are studying for a specific JLPT exam, you should cross-check the content coverage. Finally, the project is relatively young, with the latest release being v0.1.18, so expect occasional bugs and incomplete features.

Alternatives and How They Differ

The most direct alternative is WaniKani, a popular kanji learning app. WaniKani uses a spaced repetition system (SRS) and a radical-based approach to teach kanji, with a structured curriculum that takes about two years to complete. KanaDojo, by contrast, appears to use a more free-form practice model with game modes, and it includes vocabulary and kana, which WaniKani does not fully cover. WaniKani is a paid subscription service, while KanaDojo is free and open-source. Another alternative is Anki, a flashcard app that uses SRS and allows users to create custom decks. Anki is highly flexible but has a steep learning curve and a dated interface. KanaDojo offers a more polished, gamified experience out of the box, but it does not allow users to create their own decks, as far as the README indicates. For learners who need SRS, KanaDojo's lack of a spaced repetition feature is a significant gap, since SRS is widely considered the most effective method for long-term retention. The README does not mention any SRS mechanism, so it is likely a simple practice tool, not a memory scheduler.

Maintenance, Upgrade Cost, and License Implications

The project has a recent release history, with v0.1.18 pushed in May 2026, v0.1.17 in April, and v0.1.16 in March. This indicates active maintenance, but the version numbers are still below 1.0, meaning the API and features can change without warning. For contributors, this means you need to keep up with the latest changes, but the project provides an Architecture document and a Translation Guide to help. The license is AGPL-3.0, which is a strong copyleft license. For personal use, this has no practical implications. For developers who want to fork the project or use its code in another application, you must release your derivative work under the same license and make the source available to users who interact with it over a network. This is a serious consideration for any commercial or closed-source project. The README also mentions sponsorship by Vercel and Cossistant, which suggests that the project has some financial backing for infrastructure, but it does not guarantee long-term sustainability. If you are building a product on top of this, you should monitor the project's activity and be prepared to maintain your own fork if development stalls.

Editorial conclusion

Adopt KanaDojo if you are a Japanese learner who values a highly customizable, ad-free practice environment and are comfortable with a web app that tracks progress and streaks. It is also a strong choice for developers wanting to contribute to a beginner-friendly open-source project with clear documentation. Do not adopt it if you need offline access, a mobile app, or a permissive license for commercial use, since AGPL-3.0 requires derivative works to be open-sourced. Before using it as a primary learning tool, verify that the content coverage for your JLPT level matches your needs, especially for vocabulary and kanji, and check the troubleshooting guide for any setup issues on your machine.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes