-
-
Scratch the meaning open, study decks from films and series, then prove what you know in a six-step mission.
-
Seven question types, picture-based questions, and a mistake list that brings every missed word back.
-
Watch words move from "don't know" to "I know it", and turn every finished mission into a shareable trophy.
-
The KelimeYAP EN app icon: a flashcard with a scratch-off strip, the idea that started it all.
-
Quick Quiz: choose any question type and difficulty, anytime. Unlimited with Pro.
-
A picture-based quiz question: read the scene, pick the missing word.
-
A completed mission becomes a trophy card you can share to your Instagram story.
-
The Store: decks for 100 films and 10,165 TV episodes, each showing how many words are new for you.
-
A mission in progress: six steps plus a mixed final, each one revealing a piece of the puzzle.
-
The card screen: scratch the strip to reveal the Turkish meaning, then swipe to say how well you know it.
-
Studying a Friends episode deck: 676 words from S1E1, with the ones you already know filtered out.
Inspiration
This app started as a folded sheet of paper.
For years I learned vocabulary the low-tech way: print the words on an A4 sheet, fold it down the middle so the meanings hide, and carry it everywhere. In the coffee line, on the bus, five minutes before a meeting, I would unfold a corner and try to remember before I peeked. That small moment of guessing is where the learning actually happens. I got a lot of friends onto the same system, and the results honestly surprised all of us.
The designer in me wanted to turn it into a real product: physical flashcards with a scratch-off strip over the meaning. I went all in, designed the cards, and lined up a manufacturer and suppliers. Then I hit the flaw every scratch card has. You can scratch it exactly once. After that the meaning is on permanent display, and "learning" quietly turns into reading. Selling a fresh deck every time someone forgets a word is a great business model and a terrible way to learn.
That was the moment it clicked. I have been a software developer for almost ten years, and on a phone the strip can grow back. Every card can arrive scratched-closed, every time, forever, and nobody has to carry folded papers or a brick of cards in their pocket again.
The second idea came from how people actually watch things. You don't need to have seen a film to learn from it. Swipe through tonight's episode over breakfast, or this evening's film during your lunch break, and by the time you press play, the words are already yours. Minimal effort, serious vocabulary.
What it does
KelimeYAP EN is a swipe-based English vocabulary app for Turkish speakers.
- Swipe to decide. Right for "I know it", left for "I don't", down for "almost there". Every swipe becomes a confidence score, so progress is measured, not guessed. The meaning sits under a scratch-off strip you reveal with your finger, and it is back in place the next time the card comes around.
- 5,381 words from CEFR A1 to C2, drawn from Oxford 3000/5000, Longman 3000 and OPAL, with example sentences and 5,094 illustrated hint scenes. 540 collocations and useful phrases appear as a bonus on the words they contain.
- Decks for what you are about to watch. The Store holds decks for 100 films and 10,165 TV episodes, plus whole seasons and series. Every deck shows how many words are new for you and hides the ones you already know, so tonight's episode becomes this afternoon's study session. The app never shows lines, quotes or subtitles from the content, only the words.
- Saying "I know it" is not enough, you have to prove it. Words you mark as known enter a mission pool. A mission is six steps plus a final: 80 questions across seven question types, including picture-based scenes. A word leaves the pool only after you answer it without a mistake, and your mistakes come back as a custom quiz.
- A climb, not a guilt trip. Progress is drawn as a mountain journey from A1 to C2, with badges, puzzles and a small daily cap on notifications (at most two a day, and every category can be turned off).
- Kulabuz, an in-app guide. A friendly companion that answers questions about how the app works, powered by Claude through a Supabase Edge Function. No API key or prompt lives on the device. It is the only AI call in the app: all learning content is generated ahead of time, and the card loop works offline.
- No sign-up, ever. An anonymous identity is created on first launch. Progress moves to a new device with a transfer code, and a "Delete my data" button removes your learning data from the server.
How we built it
React Native and Expo (managed workflow, Expo Router, TypeScript). The backend is Supabase: Postgres, Anonymous Auth, Storage, and Edge Functions written in Deno for anything the client should not be trusted with. On the device, expo-sqlite holds the full vocabulary with a batched delta sync in both directions: every swipe is written locally first and synced to the server in periodic batches. Swipes, the scratch reveal and the mountain map run on react-native-reanimated and react-native-gesture-handler. The 25 sound effects are synthesized procedurally from a script instead of coming from a sound library. The app ships in Turkish and English, and EAS Update lets me fix JavaScript over the air with fingerprint-based runtime matching.
Monetization runs on two layers. RevenueCat powers KelimeYAP Pro: Monthly, Quarterly and Yearly plans on both stores, a RevenueCat paywall I can change without a release, and a 50% first-month introductory offer. AdMob covers free users with a native ad card (1 in 20 cards), an opt-in rewarded video, and a single banner inside the example-sentence sheet. There are no interstitials, anywhere. Rewarded credits are granted only after Google's server-side verification signature is checked in an Edge Function.
The learning content (definitions, example sentences, image prompts, quiz captions, deck word lists) was generated in bulk ahead of time with Claude Code and written straight to the database, so no step of learning depends on a live AI call.
Challenges we ran into
- Making the credit economy feel fair. My first model charged a credit for opening the example or bonus panels, and testers were charged again every time they reopened a panel on the same card. I moved to one credit per card and made every panel free.
- Trust boundaries. The first rewarded-video endpoint trusted the client for the credit amount. I rebuilt it around AdMob Server-Side Verification: an Edge Function checks Google's ECDSA P-256 signature against their published keys before a single credit is granted.
- A bug that looked like a feature. The mission mistake list was always one step behind because it read React state in the same tick it was set. The list was never empty, just wrong, so it passed every device test until I traced it by reading the code.
- Store configuration drift. My three subscriptions were purchasable in 64, 63 and 38 countries respectively, by accident, not by design. I aligned all three to the app's own worldwide availability.
- Anonymous identity behaves differently per platform. On iOS the session lives in the Keychain and survives a reinstall; on Android it does not. I confirmed it with real tester data and designed the transfer code around it.
Accomplishments that we're proud of
- More than 11,000 content decks, 5,094 illustrated scenes and an 80-question mission system, built and shipped by a solo developer.
- A core learning loop that is never blocked by an ad or a paywall: Pro removes ads and adds convenience, it never unlocks the ability to learn.
- A zero-friction start: no account, no email, no login screen before the first card.
- The folded A4 sheet finally retired. My pockets thank me.
What we learned
- Store sandboxes lie in specific ways (TestFlight showed USD in the paywall while the real purchase sheet showed local currency), so I learned to verify on the real surface before trusting a screen.
- A fair monetization system takes as many iterations as the learning loop itself. My first credit model looked fine on paper and broke the moment real people touched it.
- Anonymous-first identity removes onboarding friction but adds real design work around devices, reinstalls and data deletion.
What's next for KelimeYAP EN
Tuning the credit economy and ad frequency with real data (all of it is remote config, no release needed), privacy-respecting product analytics, more deck categories beyond film and TV, and code-based live duels between friends. https://obliquex.com/apps/kelimeyap
Built With
- admob
- anthropic
- claude
- deno
- eas
- expo-localization
- expo-notifications
- expo-router
- expo-sqlite
- expo.io
- i18next
- postgresql
- react-native
- react-native-gesture-handler
- react-native-reanimated
- revenuecat
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.