My Journey building Langadoo

I'm Kristian, a software developer from the UK. In January 2025 I made a New Year's resolution to learn Serbian. I'd just married and we'd moved to Serbia, so this wasn't some casual side project; I actually needed the language. I found learning it surprisingly hard in a bunch of different ways, so I started building my own tools to make things easier. It began with a small idea: a tool to help me read Cyrillic more comfortably. I didn't expect that little experiment to grow into a full learning platform.

Starting with a Simple App

I figured out pretty quickly that the usual language-learning apps weren't giving me what I needed. Duolingo doesn't offer Serbian, and the few things I did find felt dated, too academic, or just not useful for everyday conversation. I wanted something that helped me actually learn, not just tap my way through exercises.

So I started building a tool for myself and focused on what I felt was missing. The first feature was simple: a way to save and review words I actually cared about, instead of memorizing random vocabulary lists. I also added a timed reading exercise for Cyrillic to push myself to read the script faster and with more confidence.

That little personal prototype – basically a word saver and a Cyrillic reading timer – ended up becoming the foundation for everything that came after and set the direction for the whole project.

Evolving with Spaced Repetition

I built a simple word review tool that showed me words again after a set time. I'd guess the word and then mark my answer as correct or incorrect. At the time, I didn't know about spaced repetition or tools like Anki; I was just messing around and seeing what worked. The tool was pretty rough, and it often made me review words again way too soon. Eventually it got overwhelming, so I started reading about how memory actually works. That's when I came across the Ebbinghaus forgetting curve and the SM-2 algorithm: the same system Anki uses and rewrote my tool around those ideas. Realizing I'd stumbled onto similar methods before I knew the theory made me feel like I wasn't completely off base; the research just helped me swap out my own system with a proven one.

Incorporating Video Learning

I spent weeks trying to find Serbian content I could actually follow. YouTube videos didn't have subtitles. Kids' cartoons were still too hard. I tore through the few Serbian graded readers I could find in a couple of weeks and then hit a wall: all that was left were full-length novels I couldn't even start. It made the gap really obvious, there was almost no comprehensible content for beginners in less-common languages. So I built a feature that uses AI to transcribe videos, so I can read along while I listen. That one change made a huge difference in how quickly I started improving.

Screenshot of the app's video playback feature showing subtitles generated by the tool.

Creating Graded Readers

Because there's so little material for beginners, I decided to make my own. I took Stephen Krashen's input hypothesis. The idea that we learn language by understanding messages just above our current level and built a story generator that uses my own vocabulary list to spit out texts at the right difficulty. It keeps me moving forward instead of stalling out on stuff that's way too hard.

Building a Comprehensive Tool

Bit by bit, I integrated all these features into a cohesive learning tool. Words highlighted in videos or readers had quick access to explanations and sentence context. I added audio generation and listening practice to further enhance the learning experience.

Early version of personal app interface

From Personal Project to Public Service

After spending more than 250 hours studying with my own tools, going through over 175 videos and collecting a personal vocabulary of more than 1,500 words, I realized the approach actually worked. Every feature in Langadoo started as something I built for myself. Over time I cleaned up the interface and turned a scrappy side project into a web app that supports over 50 languages with the same set of tools. Less common languages get the full toolkit too, not just the usual favorites.

Before and after app interface comparison

Our Journey Continues

I started this as a way to teach myself Serbian, and it slowly turned into a site for anyone learning a language. A mobile app is on the way, and I'm looking for honest feedback from people who actually use it. If you have ideas, frustrations, or features you wish existed, tell me. I built this as a learner, for other learners, and I want to keep it that way.