Contexto
Orbyteca es una plataforma EdTech pensada para que los niños aprendan jugando. La idea de producto es sencilla pero ambiciosa: un equipo editorial crea artículos educativos y, a partir de ese contenido, los estudiantes acceden a una experiencia interactiva llena de juegos. La inteligencia artificial actúa como copiloto del equipo de contenido, ayudando a generar materiales que de otro modo requerirían diseñadores e ilustradores.
El sistema se reparte en tres repositorios con responsabilidades bien delimitadas: una API propia (la “enciclopedia”), un panel de administración para el equipo editorial y una app estudiantil orientada a los niños.
El reto
El verdadero desafío no era construir un blog con juegos, sino conectar tres mundos muy distintos en un solo producto coherente. Por un lado, un equipo editorial que necesita una herramienta de escritura potente y asistida por IA. Por otro, niños de distintas edades que requieren una interfaz amable, segura y divertida. Y en medio, una API que debe servir el mismo contenido a ambos públicos con reglas de acceso completamente diferentes.
A esto se sumaba el requisito de generar recursos visuales (ilustraciones, páginas para colorear) y textuales de forma automática, sin sacar al editor de su flujo de trabajo.
Arquitectura
La plataforma se estructura en tres servicios independientes desplegados con Docker:
- enciclopedia-backend: API REST en Express 5 sobre MongoDB/Mongoose, con Redis y un servidor WebSocket (
ws). Expone rutas administrativas protegidas y un conjunto de rutas públicas (/public/...) que consume la app estudiantil sin necesidad de login. - enciclopedia-frontend: el panel de administración, construido con Astro 5 en modo SSR (adaptador Node) + React 19, Tailwind 4 y componentes shadcn/ui. Integra Editor.js como editor de contenido enriquecido por bloques.
- orbyteca: la app estudiantil, también en Astro 5 SSR + React 19, con rutas dinámicas para navegar la jerarquía de contenido y un centro de juegos.
El modelo de contenido gira en torno a una entidad Post que, además del cuerpo del artículo (bloques de Editor.js o documentos importados), embebe la configuración de cada juego: lista de palabras del wordle con sus pistas, preguntas de cuestionario, adivinanzas, configuración de rompecabezas, página para colorear e imagen de fondo. El contenido se organiza jerárquicamente en niveles educativos → categorías → subcategorías → artículos.
El almacenamiento de imágenes se delega a Cloudflare R2 mediante el SDK de S3, con post-procesado de imágenes vía Sharp (recorte a 16:9, aplanado de transparencias) antes de subirlas.
Integraciones de IA
La IA está integrada en el backend y orquestada desde el panel. Hay dos proveedores con propósitos distintos:
Generación de texto — DeepSeek. Para la asistencia de redacción se usa el modelo deepseek-chat, consumido a través del SDK de OpenAI apuntando a api.deepseek.com. El panel ofrece respuestas en streaming (SSE): el backend reenvía el texto token a token mientras se genera, produciendo el efecto de “escritura progresiva”. Cada artículo puede aportar un aiContext que se inyecta como mensaje de sistema para que las respuestas sean contextuales al tema. Todo el uso (prompts, tokens, respuestas) se persiste en una colección AIUsage para trazabilidad.
Generación de imágenes — OpenAI gpt-image-1. Existen dos generadores especializados por prompt:
- Imagen de rompecabezas: una ilustración digital colorida y detallada del tema del artículo, en composición 16:9, lista para fragmentarse en piezas.
- Página para colorear: line art estilo libro infantil para edades de 4 a 6 años, con contornos negros gruesos, áreas amplias y fondo blanco, explícitamente sin texto ni sombreados.
Ambas imágenes se generan en base64, se normalizan con Sharp y se suben a R2, devolviendo una URL pública que el editor asocia al artículo.
Funcionalidades clave
- Panel editorial con editor por bloques (Editor.js), importación de documentos (Word/PDF), recorte de imágenes, SEO, titulares y estadísticas.
- Centro de juegos por artículo con hasta 5 juegos configurables: rompecabezas (3 dificultades), wordle educativo con pistas, cuestionario de opción múltiple, página para colorear y adivinanzas.
- Sección Preescolar con juegos propios de estimulación: burbujas, asociación de palabras, memoria de pares y teclado infantil.
- Sistema de experiencia (XP) y perfiles infantiles con avatar, nivel y puntos.
- Navegación jerárquica por niveles, categorías y subcategorías con tarjetas animadas y portadas automáticas.
- Rutas públicas paginadas para que la app sirva contenido en tiempo real sin autenticación de administrador.
Decisiones técnicas y retos
Una de las decisiones de fondo fue mantener dos sistemas de autenticación separados: los administradores usan JWT con bcryptjs, access token de corta duración y refresh token de larga duración (30 días) para “mantener sesión”; los estudiantes usan un esquema de perfiles con su propio servicio de tokens y control de sesión vía WebSocket, lo que permite, por ejemplo, desactivar un perfil en vivo.
El uso de SSR con Astro en ambos clientes fue clave para servir páginas rápidas y orientadas a SEO, hidratando con React 19 solo las partes interactivas (editor y juegos). En el backend, un reto real fue la compatibilidad de MongoDB en producción: una consulta de agregación que solo funcionaba en versiones 5.1+ tuvo que reescribirse para funcionar en la versión instalada, lo que resolvió la ausencia de subcategorías en producción.
También se modeló el contenido para que una categoría pueda pertenecer a varios niveles educativos a la vez, evitando duplicar artículos entre primaria y secundaria.
Resultado
Orbyteca quedó como una plataforma EdTech completa y funcional, repartida en tres aplicaciones que comparten una única API. El equipo editorial cuenta con un panel donde la IA genera ilustraciones y textos sin salir del flujo de trabajo, y los niños disponen de una app de aprendizaje gamificada que convierte cada artículo en una experiencia de juego. La combinación de DeepSeek para texto y gpt-image-1 para imágenes resume bien la apuesta del proyecto: usar la IA como motor de producción de contenido educativo, no como un añadido cosmético.