Vibe coding a Greek learning app without knowing Greek

About this post

  • This blog post talks about building a Greek learning app with AI
  • By someone who didn not know speak Greek
  • We discuss a few linguisting challenges
  • Then it talks about the technical aspects of building with AI
  • And finally about launching early on app stores

Introduction

I love learning foreign languages. In fact, usually before I go to a certain country, I try to learn a bit of their language. For that I use either Busuu or Babbel. They are great apps that unlike Duolingo actually teach you language. You get to know grammar, useful vocabulary, pronunciation, and a bit about the culture of the country. They also follow the Common European Framework (A1, A1, B1, B2, C1, C2).

Recently I was going to Greece for 3 weeks. So I wanted to learn a bit of Greek. Unfortunately, neither of those apps had Greek. I tried a few other ones on App Store, but I didn't like any of them.

So instead I decided to build my own! A classic engineer, eh?

And I've used AI not only to write code, but also to create lessons.

me vibe coding the app

How can I build an app without knowing Greek?

Okay, but how do I build an app for learning Greek... if I don't know it in the first place?!

Well, I ask AI... But how do I know what to ask and how I do know if I can trust it?

The good thing is I do speak foreign languages and I know what I need to learn. Hey, I'm even now writing this right now in a foreign language. My mother tongue is Russian. Although for the last 16 years I've been using English as my primary language.

I've also been learning Italian in the class room and tried other languages on the apps that I've mentioned to the A1 level and some above. Plus, I'm a keen traveller so I know what is necessary in the travel settings.

But can you understand what people say back to you?

That's a very reasonable question. What's the point of learning how to say something in Greek (or any other language) if you cannot understand what people respond to you with?

So here's my thinking. In many circumstances, you don't even need a verbal answer. For example, you ask for a table for two. In most cases, people will take you to a table or show you one. In other situations, for example, when asking if you could by cash - an answer would be a simple yes or no.

Plus, plus, plus, even if you don't understand a response you can always ask it in English. You have already made a tremendous effort of speaking a local language. That will surely be commended. And, based on my experience, it has definitely been the case.

Can you trust AI?

I did! And it worked! I used everything that my app generated and I didn't offend anyone. It didn't generate me an Greek equivalent of Dutch neuken in de keuken.

But there were a few occassions when I had to intervene.

Sligthly odd phrase choice

The first thing I noticed was that for goodbye in Greek it gave me αδιό σας (adio sas), whereas everybody was saying Γειά σασ (ya sas). So I had to change the app for that.

On a side linguistic note, that Γειά σασ (ya sas) both means hello and goodbye in Greek. It's similar to Ciao in Italian with the difference that it is more formal than ciao.

AI was dropping pronouns in front of verbs

Greek is not a romance language, but like some romance languages (namely, Italian, Spanish, European Portuguese) you can drop pronouns in front of verbs. That's because the verb conjugation already indicates which pronoun it is.

For example, if you want to say I go to the restaurant in Greek usually you would say πάω στο εστιατόριο (pao sto estiatorio) which would literally translate go to the restaurant. It would not have the I pronoun.

But when just learning it helps to memorise the pronouce. Hence, I intstucted the LLM to use Εγώ πάω στο εστιατόριο (E-go pao sto estiatorio), which is I go to the restaurant instead.

So technically, the AI (Claude) wasn't wrong, but... when I'm starting to learn a brand new language, I do want my pronouns. So I had to prompt it quite explicitly to always include pronouns.

Technical details 🧑‍💻

So how did I build it technically?

  • I vibed coded everything in Cursor with Claude by Anthropic underneath
  • Which built me a React Native (Expo) app
  • I used Cursor as well for creating Greek lessons
  • For audio I used ElevenLabs (more details below)
  • For images I used Flux by Black Forest Labs
  • Wow, that's actually two European Gen AI companies! Go Europe 🇪🇺🇪🇺🇪🇺 🚀🚀🚀

Laptop next to the watermelon juice

A few notes on Cursor

I had used Cursor before, but never for writing an entire app.

Well, it worked!

Cursor performed even better when I finally bothered to write a rule file instead of prompting use greek-greetings.data.ts as an example. That said, you do need to tell Cursor to use something as an example, but you may want to put it in a re-usable Cursor rule file instead of manually typing it for every prompt. Ah, yeah, and don't forget to set your rule to be always used.

Also it helps to use the built in terminal in Cursor instead of using a standlone one. In that case, it's easier to feed error messages to Cursor when something fails to run. Even though I do have a preference for a stand alone terminal. Mainly because I can use an entire screen for coding and a separate one for a terminal and other things.

Why not Claude Code?

Many people praise Claude Code and say it's better than Cursor. Fair enough. But I already had a Cursor subscription and wanted to get something out quick without having to try yet another tool.

Not saying that Claude Code is not superior to Cursor, but sometimes you just want to get a thing out without trying 101 tools.

ElevenLabs and voice cloning 🎤🎤

I chose for ElevenLabs for no good reason, other than I had heard about them a lot and decided to give them a go! It worked well!

Well, actually I've been blown away by their voice cloning!

Voice cloning is a feature that allows you to upload a recording of someone's voice and get it to say anything using that voice!

I had a maybe like 12 minutes of WhatsApp voice messages of one my Greek friends. He sent them to me in English to give hints & tips for Greece. I uploaded them to ElevenLabs and got a voice clone which talk to me in Greek. It wasn't perfect. But it was definitely recognisable! I could definitely hear that it was my friend talking to me.

But let me recap it again. Just 12 minutes of voice recordings in English produced me a voice clone talking to me in Greek 🤯🤯🤯

Flux by Black Forest Labs

I was actually going to use OpenAI for image generation. But... they required a proof of identity if I wanted to generate images via an API. Okay, no problem... but they just wouldn't accept my face...

Okay, then I heard of Flux from @levelsio. And if was good enough to build a whole revenue generating product for him, then it should be good enough for me.

Okay, I loved most of the stuff that Flux produced. But god it struggles with certain prompts!

It cannot do thumbs down 👎👎👎.

I shot myself in the foot by getting this image for 'Ναι' ('Ne') 'yes' in Greek.

yes.

Next step was to generate an image for Όχι' ('Ohi') 'no' in Greek.

I thought it would be as simple as telling it to take this picture and making the lady show thumbs down... No way... I think I tried everything - API, their studio. Nothing worked.

Eventually, I had to settle on this image.

no.

Additionally, Flux struggled with left.

left

and right.

right

The images above took me a while to produce.

AI begets AI

The prompts for geneating audio and images were also created by... AI - Cursor with Claude in this instance.

In fact, me and the AI (Claude) wrote scripts for generating audio files and images.

Audio was easy - after all, it is just text-to-speech of a Greek word. But for images I had to tweak some prompts to make them less cheesy and more Greek.

On React Native and Expo

It's a React Native app, so that I (or AI) could write the same code for iOS and Android. I've done a lot of React Native before. So nothing really new for me here... but no... I did one thing differently - I used Expo. Now that even the official documentation of React Native recommends it as the default way of using React Native, I decided it was the time.

It worked fine for my little app. And what I liked in particular is eas submit a simple command that submits an app to app stores.

So that I dind't have to mess around with Fastlane and signing. That said, I still had to manually upload the very first binary to Google Play Store.

And I only used Expo's free tier.

Shall I get it out for public 🤔?

Okay, I've built an app for myself. And it has proved to be super useful. So I thought I would get it out to the world.

Sounds easy, but I still had to go through the hurdle of putting it to app stores. Especially, on Apple App Store - where in my experience I usually get two rejections before my app is approved.

Shall I just keep it for myself? No! It would've been a waste! I have a plenty of friends who are like me and enjoy travelling and may go to Greece as well. They would probably hear me talking about the app I've built and would want to try it too.

So no, I'm definitely getting it onto the app stores 🌎!

Getting it on app stores

And as with any software release you need to do it early or even as soon as possible! If the app is rejected you find about it sooner, fix it, re-submit, and wait for another rejection. And then eventually you get there. That had always been my experience with Apple. And not only in my indie hacking life, but also in professional life when working for different companies.

So I did the minimum amount of work to get it releasable. Just took one screenshot, disabled the tablet mode (otherwise, I would've had to take screenshots for an iPad) and submitted for an Apple AppStore review. Back then the app was bare minimum. And it didn't look good at all.

Submitting an app to app stores is always a hurdle. But once it's there, subquesent submissions are easier. You won't usually get rejections, plus you would've alrady done the bureacratic exercise of assiging an app age rating, puttings links to privacy policy and so on and so on.

But what if my app is not ready and people will see it on app stores 🫣?

Ha! If it were that easy! Look, no-one will find you little app once it gets to app stores. That's the moral of the story. It's never build and they will come. Without any marketing no-one will notice. In fact, on Apple App Store for the first few days you won't be even able to find it when seaching by its name 🤦‍♂️...

Getting accepted 🚀

And guess what? Apple approved it on the first submission! I was beyond ecstatic! That had never happened in my life before!

me being happy

In fact, I had more difficulties with the Google PlayStore. First of all, I found out that my developer account was suspended - I didn't provide proof of ID in time. Then, they did reject my submissions because I lazily put a link to the privacy policy of my other app.

And here comes the app 📱

If you've made it to this point and are still interested in the app - Serious Greek - then here it is.

Written on a very wet morning in London, UK

It was a very grey and certainly very rainy morning in London, UK when I started writing this blog post. A bit of the Greek summer sunshine would've definitely helped.

Rainy London and sunny Greece

Mike Borozdin (Twitter)
19 July 2025

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way. My personal thoughts tend to change, hence the articles in this blog might not provide an accurate reflection of my present standpoint.

© Mike Borozdin