Inspiration

I wanted to learn advanced vocabulary, and the apps I tried did not help. Word-a-day apps show a word once and never ask for it again. Anki is semi functional, but the review backlog grows until opening it feels like guilt. And don't get me started on Duolingo.

The research is clear about what works: recalling a word beats rereading it (about 80% against 35% remembered after a week), and spaced practice beats cramming. But people already spend their free minutes scrolling a feed. So I asked: what if the feed itself did the teaching?

What it does

Termin is a feed of word cards for B1 to C2 learners in English, French, German, Spanish and Portuguese.

  • Scroll thousands of word cards with a definition, an example and a translation that stays blurred until you tap it.
  • Save the words you want. They come back in the feed as review questions, spaced with Leitner boxes.
  • Answer by typing or by voice. Tutor, the AI, grades the meaning and suggests a better sentence.
  • AI tools: rewrite your sentence with stronger words, find a word in a photo, pull words from an article, or describe a word and let Tutor guess it.

How I built it

I am a beginner, so I started with a written spec and a design document, then built one phase at a time with Claude Code as my coding agent, testing every phase on my iPhone.

  • App: Expo SDK 57, React Native and TypeScript, running in Expo Go. Progress is stored on the phone; there are no accounts.
  • Purchases: RevenueCat with one premium entitlement, a monthly and a yearly product, and Test Store purchases.
  • Backend: one Cloudflare Worker. It calls OpenRouter for every AI feature, uses Workers AI Whisper for voice answers, counts daily limits in KV, and serves the audio.
  • Words: one model wrote the cards, a second model from another company checked them, a script compared them with Wiktionary, and I reviewed every flag by hand. The whole dataset cost under $10.
  • Voices: 5,496 recordings made with Azure neural voices

Challenges I ran into

  • No Mac and no paid Apple Developer account. Everything had to run in Expo Go, so I could not use any library that needs a native build.
  • RevenueCat paywalls do not render in Expo Go. I built my own paywall that loads the offering and buys through the Test Store.
  • Reminders without background tasks. The app plans the next 48 hours of notifications every time it opens. The AI only suggests the order and the wording; the rules (at most one reminder every two hours, never the same word twice a day) are enforced in the app.
  • Audio bugs. Two clips could play at once, and a stopped player kept playing. It took three fixes to get right.
  • Time. The app was built in one week, so I had to decide what to focus on everyday

What I learned

  • Write the spec first. Every time I skipped it, I rebuilt the feature.
  • Never let the model make the rules. The AI writes text; the app decides what is allowed.
  • Set spending limits before the first API call. A hard cap on the key meant a bug could not cost me money.
  • Subscriptions are a design problem. The best moment to show the paywall is a locked word the learner already wants, not a pop-up.

What's next

A real store release: an App Store build, real products in RevenueCat, and the server checking Premium itself instead of trusting the app.

Built With

Share this project:

Updates