1
0 Comments

I built a language learning app to replace Anki — 1,000 users, $21 MRR

I’ve tried pretty much every popular language learning app.

Some don’t let you add your own phrases. Others force you to manually create flashcards with examples. At some point, learning the language turns into managing cards.

So I stopped using Anki and built my own app.

After ~5 months:

  • 1,000+ users
  • ~650–700 active (28 days)
  • 4 paying customers
  • ~$20 MRR

RevenueCat dashboard

No marketing budget. Built mostly solo.

This is not a success story. It’s about going from idea → real users → first money — and all the mistakes in between.


The problem

I learn languages in a very simple way:

  • consume content (videos, conversations, etc.)
  • save unknown words or phrases
  • review them daily

That’s it.

So I needed one thing:
an app where I can dump any word or phrase and just come back daily for a 15–20 minute session.

What I found on the market:

1. Dictionary-based apps
They have predefined word lists. Works for basics, but breaks when you want to learn real phrases you actually use.

2. Flashcard apps (like Anki)
Flexible, but painful.

You need to:

  • enter word
  • add translation
  • write examples
  • sometimes even add images

It feels like a second job.

Also, you manually decide how well you remember a word, which affects the algorithm. So instead of learning, you’re thinking about which button to press.

I wanted the opposite:

  • minimal input
  • automatic examples
  • spaced repetition without thinking

The trigger: moving to Serbia

In 2024 I moved to Serbia and started learning Serbian.

That’s when things got worse.

For English, you can still find decent tools.
For smaller languages — almost nothing.

At some point it became obvious:

building my own tool is easier than finding a perfect one


The solution

My requirements were simple:

  • add any word or phrase (even rare ones)
  • no manual card creation
  • examples generated automatically
  • learn multiple languages at once (I use English + Serbian)
  • spaced repetition system that decides what to show

This basically meant:

  • AI for content
  • classic algorithm for repetition

MVP in 2 months

My main goal wasn’t to build a perfect product.

It was:

don’t abandon it like all previous side projects

So I set a strict rule:

  • no spending money
  • no overthinking
  • build something usable in 2 months

I started with the simplest thing possible:

A web page with one input:

  • enter word/phrase
  • get translation + examples

No accounts. No saving. No UI.

Just testing the core idea.

At some point I noticed:

I actually want to use this myself

That was the signal to continue.


Building the app

I kept the stack simple:

  • React Native + Expo (iOS + Android)
  • Node.js backend (basically AI proxy + TTS)
  • Vercel for deployment
  • RevenueCat for subscriptions
  • Next.js for website

For design:

  • used a free Figma UI kit
  • no designer
  • no pixel perfection

For code:

  • heavily used AI (Cursor, Claude Code)

This helped a lot early on. It also made it easy to throw away bad solutions without regret.

The first version of the app was built in a few days.

It was messy. But it worked.


Unexpected problem: Serbian language

This one surprised me.

Serbian uses both:

  • Latin alphabet
  • Cyrillic alphabet

AWS TTS only accepted Latin.
AI randomly generated both.

I tried fixing it with prompts. Didn’t work reliably.

Final solution:

  • simple algorithmic conversion (Cyrillic → Latin)

Sometimes the simplest solution is the most reliable.


Launch → immediate pain

I launched the first version on iOS.

At that time I had a Telegram channel (~1,500 subscribers), so I just posted about it.

Then reality hit.

  • bugs everywhere
  • broken flows
  • edge cases I never considered

Things that worked fine for me broke instantly for users.

I spent the next couple of weeks fixing and stabilizing.

This was the most valuable phase.

Until real users touch your product, you live in an illusion.


Getting users without spending money

Once the app became somewhat stable, I tried distribution.

I wrote a post on a Russian tech platform (Habr):

  • ~200 users

Then another post after improving training:

  • ~500 users in a few days

At that point I realized:

distribution is not only about money

If you hit a real problem and explain it well, users come.


A bug that almost killed monetization

When I introduced subscriptions, something weird happened.

  • users paid
  • subscription activated
  • money got refunded a few days later

At first I thought it was normal platform behavior.

Then negative reviews appeared:

“paid but features don’t work”

Turned out:

  • I misconfigured RevenueCat + Google Play integration

Payments weren’t completing properly.

Result:

  • lost paying users
  • bad reviews
  • almost risked getting banned

Fixing this took a few days.

Also a reminder:

AI won’t save you from real debugging


Current numbers

After ~5 months:

  • 1,000+ users
  • ~650–700 active (28 days)
  • 4 paying customers
  • ~$20 MRR

Not impressive. But real.

More importantly:

  • this is no longer an idea
  • it’s a working product with users

What didn’t work

  • assuming MVP is “good enough”
  • underestimating edge cases (especially languages)
  • relying on AI to solve everything
  • not testing payments properly

What I learned

  • you don’t need to validate ideas forever — start with your own problem
  • AI speeds things up, but doesn’t remove complexity
  • distribution matters more than code
  • MVP will be messy — that’s normal
  • real feedback only comes from real users

What’s next

Right now I’m focused on:

  • stability (AI still produces weird results sometimes)
  • improving the core loop (add → learn → retain)
  • better support for less common languages

I’m also exploring:

  • generating images for words/phrases (for associations)

Final note

If you're curious, the app is called VibeLing.

I built it mainly to learn English and Serbian myself — and I still use it every day.

on March 19, 2026
Trending on Indie Hackers
Stop Spamming Reddit for MRR. It’s Killing Your Brand (You need Claude Code for BuildInPublic instead) User Avatar 216 comments What happened after my AI contract tool post got 70+ comments User Avatar 201 comments Where is your revenue quietly disappearing? User Avatar 85 comments We made Android 10x faster. Now, we’re doing it for the Web. 🚀 User Avatar 71 comments a16z says "these startups don't exist yet - it's your time to build." I've been building one. User Avatar 56 comments The workflow test for finding strong AI ideas User Avatar 53 comments