🌍 Languro: Personalized language learning from day one
✨ What inspired me
I have been learning languages for years, and most apps still push everyone through the same single-track path. In reality, language learning works best when it is personal. Even at A1, the vocabulary, grammar, and practice should reflect your life and goals. With AI, especially Gemini, personalization at scale is finally realistic, so I built Languro to prove it.
🎯 The idea
- Personalize immediately by tailoring verbs, drills, reading, and feedback based on what the learner actually interacts with.
- Build a self growing knowledge base from zero to 300 plus verbs and counting, powered 100% by AI (Gemini 3 Pro) with human in the loop validation, so the system scales content across text, audio, and images without hand building anything!.
🧱 How I built it
🧰 Tech stack
- Frontend and UI: Next.js, shadcn/ui, Tailwind CSS
- Data: Prisma, Neon
- Hosting: VPS with Coolify
- CI/CD and pipelines: GitHub, Apache Airflow
- Media storage: Cloudflare R2
- AI and voice: Gemini (Pro and Flash variants), Google Cloud TTS, Gemini TTS
- IDE and workflow: Google Antigravity with agentic coding (primarily Gemini Pro)
⚙️ Core features
- Smart conjugations: Generates the verb forms the user needs. If the system does not have a form, Gemini 3 Pro generates it and the result is stored for reuse.
- User driven tracking: Verbs used in lessons or searched in conjugations are tracked and used to personalize what appears next, including recommended drills and reading content.
- Drills with spaced repetition: Uses the SM-2 algorithm to schedule reviews. Gemini 3 Pro also helps generate and validate drill content so practice stays aligned to the learner’s level and context.
- Writing feedback (OCR + coaching): Users upload handwriting via QR scan or photo. Gemini 3 Pro Vision extracts the text, compares it to the prompt, detects mistakes and missing structure, then returns targeted feedback.
- Reading with contextual actions: Click to seek audio and a right click menu for instant help. Gemini 3 Pro provides contextual translations and can surface relevant conjugations from selected words, with one click save into lists for later SRS.
🧩 Challenges I faced
The hardest part was mastering vibe coding while keeping language outputs correct, especially edge cases, because each language has its own rules and exceptions. At the same time, I had to build a reliable backend with a normalized data model that can represent those complexities cleanly and scale personalization without becoming brittle.
📚 What I learned
I learned end-to-end product delivery, including planning, self-hosting, and building reliable pipelines. Most importantly, I learned how language structure translates into better practice, feedback, and personalization.
On the engineering side, this project pushed me into real data engineering. I was determined to learn Apache Airflow, and even though I did not think I needed it at first, trial and error while building the pipeline proved otherwise. Airflow made debugging much easier by giving clear observability, such as task status, failures, retries, and exactly where a run breaks. That became especially valuable for the batch text-to-speech pipeline I built, because I could fix issues quickly and always know where things were going wrong.
Built With
- apache-airflow
- cloudflare-r2
- coolify
- gemini-3-flash
- gemini-3-pro
- gemini-pro-2.5-tts
- github
- google-cloud-text-to-speech
- neon-postgres
- next.js
- prisma
- shadcn/ui
- tailwind-css
- vps-hosting
Log in or sign up for Devpost to join the conversation.