GoTypeScriptMicroserviciosIA/LLMAWS

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

uLearn

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.

Características Clave

  • ✓ Tutor de voz con IA en tiempo real, con correcciones contextuales
  • ✓ Convertí cualquier palabra en flashcard mientras leés
  • ✓ Repaso de flashcards con repetición espaciada adaptativa
  • ✓ Búsqueda de palabras al hacer clic en transcripciones de YouTube
  • ✓ Reglas de gramática por idioma, no un modelo genérico
  • ✓ Planes Free, Pro y Premium

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.

vuelve según su propio cronograma Leés texto o video Tocás una palabra o frase Se crea la card gramática + traducción Se repasa después espaciado según cuánto sabés
Leer y repasar se alimentan entre sí. Nada se escribe a mano, y nada se repasa con un cronograma fijo.
El mismo flujo en vivo, tal como aparece en la home de uLearn.

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.

Detalle de flashcard de uLearn para el verbo francés arriver, con traducción, significado, oraciones de ejemplo y frecuencia de uso
La flashcard de "arriver", creada en el momento en que se tocó la palabra mientras se leía.

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.

Tabla de conjugación del verbo francés arriver en présent, passé composé, imparfait y futur simple
Présent, passé composé, imparfait, futur simple: los cuatro generados, ninguno escrito a mano.

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.

Vista de colecciones de uLearn mostrando la colección de gramática Verbos con être en francés
La colección "Verbos con être": una sola regla de gramática, todas las palabras que la siguen.

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.

AWS Groq OpenAI Gemini Webshare 5 proveedores externos 9 servicios independientes operados por un solo desarrollador
Cinco proveedores, ninguno bajo mi control, alimentando nueve servicios chicos en vez de un solo backend compartido, así un problema con un proveedor queda contenido a un solo servicio.

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