Vocabulary is my open-source word trainer built with Next.js and TypeScript. Its core decision is to schedule recognition and recall separately: knowing a word when you see it does not mean you can produce it from memory.
The task
Build a review workflow that treats those two skills independently rather than giving a word one shared progress score.
Implementation
Each word has two independently scored SM-2 review tracks. A repository interface separates the learning logic from word storage. The published implementation uses Notion for word data and Prisma/PostgreSQL for streak data.
Pronunciation uses browser speech playback through the Web Speech API, avoiding a separate paid text-to-speech service.
My role
I defined the product and learning workflow, directed implementation with Claude Code, and review and maintain the codebase. This is a personal product developed with AI assistance.
Result
The project demonstrates a complete learning interface, review scheduling and a storage boundary that can be changed without rewriting the learning flow. The source is public for inspecting the implementation.