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