Date: July 2025 β Sept 2025
KanjiLearner is a full-stack web application I developed to help learners study kanji using a spaced repetition system (SRS). It includes lessons, reviews, mistake tracking, and customizable mnemonics.
Within three months I shipped a production-ready MVP that I continue to use for my own Japanese studies. The project demonstrates end-to-end ownership of data modeling, API design, frontend development, and production deployment.
Tailwind CSS
, using Flexbox and CSS Grid layouts
for clean, responsive pages. The dashboard adapts across screen sizes, presenting lessons, reviews, and mistakes in a balanced layout.
LHH
or LH(L)
,
which are critical for sounding natural in spoken Japanese.
React Query
to handle server-side pagination of dictionary entries.
The client caches responses and seamlessly fetches the next page, ensuring smooth navigation even across thousands of kanji, radicals, and vocabulary items.
<radical>
, <kanji>
,
<vocab>
, and <reading>
tags from API responses. These tags are rendered with distinct styles, making it easy
for learners to quickly distinguish between character types and readings in mnemonics and explanations.
Axios
with Djangoβs CSRF protection and sessionId cookies for
secure, cookie-based authentication. This ensures that user sessions remain persistent and protected without exposing tokens.
Overall, KanjiLearner combines proven Japanese learning methods with robust engineering: from data modeling and spaced repetition logic to React-driven interactivity and production deployment. It serves both as a personal study tool and as a demonstration of full-stack development.