Todos los proyectos
Arquitectura de Software/ 2025

CourseClash

Una plataforma educativa gamificada donde los estudiantes completan actividades y se enfrentan en duelos en tiempo real.

Resumen

CourseClash es una plataforma educativa que motiva a los estudiantes con logros, rankings, personalización de perfil y duelos en tiempo real. Se construyó con un equipo pequeño para practicar arquitectura de software en un producto realista.

Problema y objetivo

Una sola aplicación acoplaría identidad, actividad de aula y juego en vivo. El objetivo fue explorar cómo servicios independientes, mensajería asíncrona y canales en tiempo real podían sostener una experiencia de aula ágil.

Rol y contribuciones

Lideré la arquitectura y el desarrollo full-stack con un equipo pequeño: definí los límites entre servicios, el API gateway, los flujos de eventos y el canal de duelos en tiempo real, y contribuí al frontend en Next.js.

Solución y arquitectura

Autenticación, actividades y duelos se ejecutan como servicios separados detrás de un API gateway. FastAPI y Go proveen los servicios de backend, RabbitMQ transporta eventos de dominio y WebSockets mantienen sincronizados los duelos. Un frontend en Next.js consume el gateway.

Implementación técnica

El gateway centraliza el enrutamiento y la validación de tokens. Los servicios publican y consumen eventos de finalización de actividades, actualización de rankings y estado de duelos. El servicio de duelos empuja el estado por WebSockets para que ambos jugadores vean la misma progresión.

Decisiones de ingeniería

Límites de servicio por dominio
Autenticación, actividades y duelos cambian a ritmos distintos; separarlos limita el radio de impacto y permite que cada servicio evolucione de forma independiente.
Mensajería asíncrona para eventos entre dominios
RabbitMQ desacopla las actualizaciones de rankings y actividades del camino de la petición, cambiando consistencia inmediata por resiliencia.
WebSockets solo para duelos
El transporte en tiempo real se limita a la función que lo necesita, manteniendo el resto de la plataforma en petición/respuesta convencional.

Resultados

La plataforma demuestra una topología de microservicios funcional con enrutamiento por gateway, actualizaciones por eventos y duelos en tiempo real. Es un proyecto académico; no se afirman métricas de carga ni adopción en producción.

Limitaciones

Los servicios distribuidos añaden sobrecarga operativa. El proyecto explora patrones de arquitectura en lugar de operar a escala de producción.

Tecnologías

  • FastAPI
  • Go
  • Next.js
  • API Gateway
  • RabbitMQ
  • WebSockets