Inspiration

There is a specific kind of tired that comes from living inside a language you don't speak fluently yet.

After moving from South India to Munich, vocabulary became one of the biggest barriers to learning German. Without enough words, I could not follow what was being said around me, no matter how much grammar I studied.

Most vocabulary apps had the same problems for me:

  • They mostly relied on boring flashcards.
  • The vocabulary was often generic, with very little personalization.
  • Learning felt like another study session instead of something connected to daily life.
  • Streaks were supposed to motivate me, but losing one often did the opposite.
  • Once I missed a few days, it became much easier to stop using the app completely.

So we built Vocabloot around one simple idea:

Learn the words that are already part of your life.

What it does

Vocabloot turns the world around you into your personal vocabulary book.

Take a photo of an object and Vocabloot gives you:

  • The word in the language you are learning.
  • The meaning.
  • Pronunciation.
  • Part of speech.
  • An example sentence.

It also helps you understand the sentence better:

  • Text-to-speech reads the sentence aloud.
  • Each word is highlighted while it is spoken.
  • Tap any word in the sentence to see its meaning instantly.

Your own vocabulary then becomes the content for 8 arcade-style games. The games help you practice:

  • Spelling.
  • Meaning.
  • Translation.
  • Recall.
  • Using words in context.

You can also learn from images outside the app:

  • Share an image from another app directly to Vocabloot.
  • Turn that image into a new word.
  • Use photos from your gallery for learning.

Every captured object also becomes a shareable sticker. You can share these stickers through WhatsApp and other platforms.

Vocabloot also has home-screen widgets on both iOS and Android. The widgets show your own:

  • Words.
  • Photos.
  • Translations.

This helps you see vocabulary during the day without opening the app.

The app is also:

  • Localized into 24 interface languages.
  • Designed to work without an account.
  • Local-first, with the wordbook stored on the device.
  • Able to back up and restore the full wordbook.

The main idea is simple: instead of learning from someone else's word list, you learn from your own kitchen, street, commute, photos, and daily life.

How we built it

Vocabloot is built with Kotlin Multiplatform and Compose Multiplatform. This lets us share most of the code between iOS and Android, including all 8 games.

Our main stack includes:

  • Kotlin Multiplatform
  • Compose Multiplatform
  • Koin
  • Voyager
  • Ktor
  • Firebase (Cloud Functions, Auth, Remote Config, Crashlytics)
  • OpenAI models
  • RevenueCat

For platform-specific features, we use native implementations for:

  • Camera.
  • Text-to-speech.
  • ML kit and Apple Vision for object segmentation in images.
  • File storage.
  • Home-screen widgets (WidgetKit on iOS, Glance on Android).
  • iOS and Android share features.

AI requests are handled through Firebase Cloud Functions using OpenAI models, so API keys do not live inside the app.

The wordbook is stored locally using files instead of a traditional database. This keeps the app local-first and makes full backup and restore simple.

RevenueCat handles subscriptions on both platforms.

Challenges we ran into

Building a real cross-platform app was one of the biggest challenges. Sharing code helped us move faster, but iOS and Android still behave differently. We had to handle native features carefully, especially:

  • Camera.
  • Text-to-speech.
  • Widgets.
  • Storage.
  • Platform-specific behavior.

Another big challenge was working as a team across three different time zones while all of us also had full-time jobs. That meant:

  • Early morning calls.
  • Late-night reviews.
  • Weekend development.
  • Coordinating development, product, design, and marketing across different schedules.

Building for a global audience was also harder than we expected. We had to think about:

  • Different languages.
  • Different scripts.
  • AI accuracy.
  • Localization.
  • Pricing.
  • Age ratings.
  • Privacy rules.

Shipping the app was another challenge. Getting approved on both the Apple App Store and Google Play involved:

  • Store policies.
  • Privacy requirements.
  • Age ratings.
  • Closed testing.
  • Review feedback.
  • Multiple rounds of fixes.

We learned that building the product is only one part of the work. Getting it into users' hands is another big part.

Accomplishments that we're proud of

We are proud that Vocabloot is not only a prototype. It is a real app that is available on both iOS and Android.

Some of the things we are most proud of:

  • Shipping one Kotlin Multiplatform app on both iOS and Android.
  • Sharing most of the code between both platforms.
  • Building all 8 games in Compose Multiplatform.
  • Avoiding separate game implementations for iOS and Android.
  • Building real word-by-word TTS highlighting using native speech callbacks.
  • Building native WidgetKit and Glance widgets.
  • Creating a local-first wordbook without requiring an account.
  • Supporting full wordbook backup and restore.
  • Localizing the app into 24 interface languages.
  • Supporting different scripts and text lengths.
  • Shipping successfully on both the App Store and Google Play.

The biggest accomplishment for us is that all these parts work together in one real product.

What we learned

One of our biggest lessons was that cross-platform does not mean both platforms behave the same. Sharing code saves a lot of time, but you still need to understand how iOS and Android work differently.

We also learned that pricing is very hard. Vocabloot is a global language-learning app, so we wanted it to be affordable for people in different countries. At the same time, we still need to cover:

  • AI costs.
  • Infrastructure.
  • App store fees.
  • Development costs.

Finding a price that is fair for users and also sustainable for us was harder than we expected.

We also learned how difficult app approval can be. Getting approved on both Apple and Google meant dealing with:

  • Privacy rules.
  • Age ratings.
  • Closed testing.
  • Store policies.
  • Multiple reviews.

And even after building and shipping the app, marketing and distribution are even harder. A good product does not automatically get users. We are still trying different ways to reach the right people, including:

  • Content.
  • SEO.
  • Communities.
  • Creators.
  • Social media.
  • Partnerships.

This is still one of the biggest things we are trying to crack.

What's next for Vocabloot

We already have many ideas based on early feedback. Next, we want to work on:

  • Personal cloud backup, so users can connect their own cloud storage.
  • Example sentences based on beginner, intermediate, or advanced level.
  • Better use of favorites for focused learning.
  • A map view showing where and when words were captured.
  • Categories and collections for organizing words and stickers.
  • Better feedback for AI-generated words, translations, and sentences.

We are committed to add 14 more learning languages:

  • Tamil.
  • Telugu.
  • Kannada.
  • Malayalam.
  • Hindi.
  • Punjabi.
  • Arabic.
  • Filipino.
  • Indonesian.
  • Romanian.
  • Russian.
  • Serbian.
  • Turkish.
  • Ukrainian.

This list is not random. Every language on it is the mother tongue of a friend or someone we know. They are the people we are building these languages for, and the people who will tell us when a word is wrong.

The long-term goal is simple: make Vocabloot feel less like a traditional vocabulary app and more like a personal visual history of the language you learn through everyday life.

Built With

  • android
  • applevision
  • camerax
  • compose-multiplatform
  • fastlane
  • firebase-auth
  • firebase-cloud-functions
  • firebase-crashlytics
  • firebase-firestore
  • firebase-remote-config
  • ios
  • jetpack-glance
  • kmp
  • koin
  • kotlin
  • mlkit
  • openai
  • revenuecat
  • swift
  • voice-tts
  • widgetkit
Share this project:

Updates