
Vibecoded with Claude
Tsundoku (積読) is "a Japanese term referring to the act of acquiring reading materials, buying books, and letting them pile up in one's home without reading them", and I am very much guilty of that. I love books, I love reading, but as a non-native Japanese speaker, I hated having to rely on apps that required subscriptions or wouldn't let me build or export word lists. I wanted a very specific study tool, and so I built it. This was my first vibecoding project, and I chose it as a way to prototype fast, really fast, and explore what AI-assisted development actually looks like in practice compared to building things the traditional way.
Tsundoku Friend is a fully browser-based Japanese study companion. You can track your reading with per-book vocabulary lists, look up words and save them directly to said lists, study flashcards, draw kanji for handwriting recognition, search by radical components, and read NHK Easy News articles with a furigana toggle, all without creating an account or installing anything.
You can export vocab lists as CSV to reuse them in other learning tools such as Anki Decks, and export and import JSON files, making the app cross-device and your reading lists easy to share.
The app runs entirely on GitHub Pages with no backend. It lives in localStorage and syncs via JSON export/import. API calls are proxied through a Cloudflare Worker to handle CORS and keep keys off the client. WaniKani integration pulls vocabulary levels via their public API. Handwriting recognition uses Google Input Tools. The theming system supports three colour palettes with CSS custom properties.
Coming in with a web development background made it easier to keep an eye on Claude's output, catch issues early, find what broke and why, but vibecoding still changed how I worked. The speed is genuinely different, in that I had a fully functional prototype in mere seconds. Sure, it needed a lot of polish, but the base was there and it felt like working as part of a very efficient team. What also struck me was the shift in focus: less time on implementation, more time on product thinking, UX details, and articulating exactly what I wanted and why. It gave me a clear sense of where AI really shines, and where human judgment is still required.
This was built with Claude throughout, and I think transparency is important in that regard. Vibecoding is a legitimate way to build, and for someone who already understands the stack, it's a genuinely interesting new way of working, rather than a workaround.




