uLearn
Una plataforma de aprendizaje de idiomas con IA: tutoría por voz en tiempo real, flashcards adaptativas y gramática por idioma en cuatro idiomas. Diseñada, construida y operada en solitario.
Duración
En vivo
Equipo
Desarrollador solo
Rol
Fundador y Desarrollador Full-Stack
Descripción General
uLearn es una plataforma de aprendizaje de idiomas con IA para alemán, inglés, ruso y francés. Un tutor de voz en tiempo real sostiene conversaciones habladas con correcciones contextuales, y cualquier cosa que leas, incluidas transcripciones de YouTube, se convierte directo en flashcards adaptativas.
El Desafío
El desafío no es ningún proveedor en particular, es operar cinco de ellos en solitario: AWS para hosting y la base de datos, Groq para speech-to-text, OpenAI para text-to-speech, Gemini para chat y generación de texto, y Webshare como proxy para los videos de YouTube que los estudiantes usan para aprender. Una sola persona mantiene todo eso integrado y funcionando, sin equipo para repartirlo.
La Solución
La técnica que resuelve este desafío es una arquitectura de microservicios: cada proveedor vive dentro de su propio servicio independiente en Go en vez de un codebase compartido. Eso logra dos cosas: tocar la generación de chats con Gemini significa abrir un repositorio específico, no un archivo enterrado dentro de un proyecto más grande que toca una docena de otras cosas, y una caída en un proveedor, digamos la API de STT de Groq, queda contenida en ese servicio en vez de tirar abajo el chat o las flashcards también.
Nueve servicios chicos, cada uno con un solo trabajo, desplegados en AWS ECS y provisionados con Pulumi, hacen que ambas cosas sean manejables para una sola persona en vez de un equipo.
Una conversación, no un guion
El tutor de IA sostiene una conversación de ida y vuelta real, en voz alta. Reacciona a lo que decís, corrige en contexto, y armar un escenario de práctica a pedido en vez de seguir un guion fijo.
Es un problema de ingeniería lo bastante grande como para tener su propia nota: mantener un WebSocket abierto en vez de ir y volver por HTTP, filtrar el micrófono con detección de actividad de voz real, y asegurarse de que el asistente nunca hable sobre sí mismo.
Leé cualquier cosa, convertila en repaso
Marcá una palabra o una frase en cualquier cosa que estés leyendo, incluso dentro de una transcripción de YouTube, y se convierte en una flashcard en el momento: traducción, gramática y contexto ya completos. Sin entrada manual de datos, sin una app separada para vocabulario. Míralo por tu cuenta en un tour guiado de leer y buscar una palabra.
El repaso tampoco es un mazo estático. Las cards vuelven espaciadas según cuánto ya sabés cada una, no en el mismo orden todas las veces. Acá tenés también un tour guiado de la página de repaso.
Cuatro idiomas, cada uno a su manera
Las flashcards están hechas a medida de la gramática de cada idioma, no en base a una sola plantilla estirada para los cuatro. Los sustantivos en ruso tienen tablas de declinación completas, porque el sistema de casos del ruso es lo bastante complejo como para justificarlas. Los sustantivos en alemán también declinan, pero de forma tan simple que una tabla dedicada sería excesiva, así que sus flashcards la omiten. El francés se apoya más en la conjugación verbal. Mirá cómo se ve eso un poco más abajo.
Eso es posible porque cada idioma tiene su propia tabla en DynamoDB, y DynamoDB no tiene schema fijo: un campo nuevo, como una tabla de gramática que un idioma no necesitaba antes, se puede agregar directo en producción, sin migración.
Cómo se ve en la práctica
Una flashcard, completada por vos
Traducción, significado, oraciones de ejemplo reales y frecuencia de uso, generado con un solo toque, no escrito a mano.
La tabla de conjugación que arma
El francés se apoya en la conjugación verbal, así que eso es lo que reciben sus flashcards: cada tiempo verbal, generado directo desde el verbo.
Agrupado por gramática, no por fecha
Las colecciones organizan las flashcards por lo que enseñan, como todos los verbos franceses que usan être como auxiliar, no por cuándo se agregaron.
Construido y operado por una sola persona
Nada de eso corre en un solo servidor. AWS para hosting y la base de datos, Groq para speech-to-text, OpenAI para text-to-speech, Gemini para chat y generación de texto, Webshare como proxy para los videos de YouTube que los estudiantes usan para aprender: cinco proveedores externos, y una sola persona manteniendo todo eso integrado y funcionando.
La técnica que hace eso manejable es una arquitectura de microservicios. Nueve servicios independientes, cada uno con un solo trabajo, desplegados en AWS ECS. Tocar la generación de chats con Gemini significa abrir un repositorio específico, no un archivo enterrado dentro de un proyecto más grande que toca una docena de otras cosas, y un problema en un proveedor, digamos que se cae la API de STT de Groq, queda contenido a ese servicio en vez de tirar abajo toda la app.
Dónde corre
uLearn está en vivo en ultimatelearning.app, soportando alemán, inglés, ruso y francés, en planes Free, Pro y Premium. El frontend web se sirve a través de HTML6, el mismo motor de plantillas construido en Eldøy Projects, ahora corriendo un producto propio en producción.
¿Te interesa este proyecto?
Me encantaría discutir los detalles técnicos, desafíos enfrentados y lecciones aprendidas al construir este proyecto.
Contactame