kana-dojo
免费开源的日语学习道场,通过游戏化训练帮你高效掌握假名、汉字与词汇
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
免费开源的日语学习道场,通过游戏化训练帮你高效掌握假名、汉字与词汇
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:KanaDojo 日语学习平台主界面
你有没有过这种经历:翻开一本日语教材,看到满页的「こ」「ん」「に」「ち」「は」,脑子瞬间宕机?记不住、忘得快、反复复习还是混淆——这是每个日语初学者必经的「假名地狱」。传统记忆方式靠死记硬背,枯燥且低效。而 KanaDojo 就像一个专为日语学习者打造的「数字道场」,用游戏化的方式把五十音图、汉字、词汇训练变成一次次令人上瘾的闯关挑战。
日语是全球学习人数最多的语言之一,但优质的学习资源长期被商业产品垄断。Duolingo 虽然覆盖日语,但深度有限;Anki 虽然强大,但需要手动制作卡组,对初学者不友好。Monkeytype 的极简打字练习给了创作者灵感——为什么不能有一个类似风格的日语学习平台?
KanaDojo(かな道場)由独立开发者 lingdojo 创建,得到了 Vercel 开源赞助计划的支持。平台名称「道場」即道馆、武术训练场的意思,寓意学习日语就像修炼武艺,需要反复训练才能精进。不同于传统教材的线性推进,KanaDojo 允许学习者自由选择训练内容——可以只练假名、只背汉字、或者专注词汇,配合间隔重复算法,让复习恰到好处地出现在记忆即将消退的时刻。
KanaDojo 将学习内容组织为三个「道场」,每个道场对应不同的训练维度:
四种训练模式让学习过程不单调:
这四种模式覆盖了被动识别和主动回忆两种认知路径,比单一练习模式更能强化记忆效果。
从代码层面看,KanaDojo 是一个典型的现代 TypeScript 全栈项目,架构清晰、工程化程度高。
前端核心:基于 Next.js 15 + React 19 的 App Router 架构,使用 TypeScript 提供类型安全保证。UI 层采用了 Tailwind CSS + shadcn/ui 的组合,前者负责原子化样式,后者提供无障碍可访问的组件基底。状态管理使用 Zustand(轻量级、TypeScript 友好),动画交互使用 Framer Motion 实现流畅的页面过渡和微交互。国际化方案选用 next-intl,支持 20+ 语种的本地化,README 本身就有 20 个翻译版本,社区参与度极高。
数据层:使用 better-sqlite3 实现本地 SQLite 数据库,数据存储在浏览器端 IndexedDB(通过 localforage),无需注册账号即可使用。所有学习进度、成就、连续打卡记录都保存在本地,隐私友好。
日语处理:集成 Kuroshiro(日文转换库)+ Kuromoji(日语分词器)+ Wanakana(假名罗马字互转),这是日语 NLP 的经典组合,支撑了输入验证、假名转换等核心功能。
DevOps 成熟度:项目提供了完整的多阶段 Dockerfile(node:20-alpine 三阶段构建)和 docker-compose.yml,Next.js 以独立模式(standalone output)构建,最终产物是一个轻量的 Node.js 服务,无需 Nginx 即可运行。代码规范方面集成了 ESLint、Prettier、Husky(Git hooks)、lint-staged,提交前自动格式化。测试使用 Vitest,组件文档使用 Storybook,CI/CD 流水线规范完善。
KanaDojo 背后真正发挥威力的,是间隔重复(Spaced Repetition)算法。简单来说,这个算法的核心思想是:当一个知识点刚学会时,遗忘速度最快,需要高频复习;随着掌握程度提升,复习间隔可以逐渐拉长——在记忆即将消退但尚未消退的瞬间复习,效率最高。
类比一下:学日语假名就像种竹子,第一天浇三次水、第二天浇两次、一周后一周一次——而不是每天浇等量水。间隔重复就是那个帮你记住「该浇多少水」的智能提醒。KanaDojo 自动记录每个字符/词汇的掌握程度,动态调整复习频率,让学习者把有限的时间用在最容易遗忘的知识点上。
KanaDojo 在视觉设计上下了很大功夫。平台提供了超过 100 套主题,包括日式和风、马卡龙配色、深色极简等多种风格,内置 28 种日文字体。用户可以根据喜好自定义训练界面颜色、字体和背景,让每天的打卡练习不至于审美疲劳。成就系统和连续打卡机制(Streaks)提供额外的正反馈激励,80+ 成就徽章覆盖从「完成第一个道场」到「连续打卡 365 天」的各个阶段。
作为初学者入门工具,KanaDojo 的上手门槛极低——不需要注册、安装任何软件,打开浏览器访问 kanadojo.com 即可开始训练。如果想本地部署,也只需要 Node.js 环境加几条命令。
但有一点值得注意:KanaDojo 是一个专注「训练」的工具,而不是一个「教学」工具。它默认用户已经知道「あ」读作「a」,不提供语法解释或课文内容。如果你是日语零基础,需要先配合其他资源(如日语教材、视频课程)学习基本发音和语法,再来这里做强化训练,效果最佳。
没有任何工具是完美的,KanaDojo 也有其局限:
缺乏语法训练:平台专注于词汇和字符记忆,完全不涉及日语语法。对于想要系统学习日语的学习者来说,KanaDojo 只能作为辅助工具,不能替代完整的课程体系。
依赖本地存储:所有数据存在浏览器端,换设备或清缓存会导致进度丢失。虽然 Anki 转换器提供了一定的数据迁移能力,但使用门槛比原生 Anki 高。
服务器端数据缺失:作为纯前端项目,KanaDojo 不提供云端同步、多设备同步或学习数据分析。如果用户需要量化自己的学习进度曲线,目前只能靠外部工具手动记录。
KanaDojo 的出现填补了开源日语学习工具的一个空白。在此之前,日语学习领域几乎没有一个同时具备:高质量数据 + 现代化前端 + 活跃社区 + 良好可扩展性的开源项目。
从增长曲线看,该项目 GitHub Stars 已突破 2600,Reddit 和日语学习社区的反响积极。它代表了 AI 时代语言学习工具的一个趋势:去中心化、用户自主、数据可移植——不被商业平台绑定,学习成果属于用户自己。随着全球日语学习需求的增长,这类开源工具的价值会越来越凸显。