German1000
A free, stateless German vocabulary product built around 1,000 frequency-ranked words. Open it, practise, leave. No account, streak, daily queue, or saved progress.
Role and process
Role: Product designer and frontend builder
Challenge: Vocabulary tools bury the words that matter under accounts, streaks, queues, and saved progress that the learner has to maintain before they can practise.
- Put retrieval before help: you try to recall the meaning first, then the answer is revealed.
- Correct a wrong exercise answer immediately, which is the fix for the known failure mode of multiple choice.
- Keep the product stateless: no account, score history, streak, daily queue, or database to maintain.
Words: 1,000 frequency-ranked · Exercise bank: 1,000 questions · Account: Not required · Price: Free
Tools: TypeScript, React, Content modeling, Vocabulary data QA, Accessible interaction states
Open to a card
The first screen is the deck, not a signup. One thousand frequency-ranked words shuffle into a card with meaning and three bilingual examples. The rank stays visible, so the learner can see why the word is here.

The whole index stays reachable
Search and filter all 1,000 entries. Each record keeps its examples, so the card is a starting point rather than the whole product.

Recall first, answer second
Multiple-choice rounds ask for the meaning before revealing it. A wrong answer is corrected immediately; the score lasts only for the round.

Stateless on purpose
There is no database to maintain and no progress to lose. The deck, index, and exercises come from one contiguous 1,000-record dataset, paired with 2,999 reviewed bilingual sentences. The tradeoff is deliberate: no audio yet, and no memory between visits.