CourseClash
A gamified classroom platform where students complete activities and duel each other in real time.



Overview
CourseClash is an educational platform that motivates students with achievements, rankings, profile customization, and real-time duels. It was built with a small team to practise software architecture in a realistic product.
Problem and objective
A single application would couple identity, classroom activity, and live gameplay. The objective was to explore how independent services, asynchronous messaging, and real-time channels could support a responsive classroom experience.
Role and contributions
I led the architecture and full-stack development with a small team: defining service boundaries, the API gateway, event flows, and the real-time duel channel, and contributing to the Next.js frontend.
Solution and architecture
Authentication, activities, and duels run as separate services behind an API gateway. FastAPI and Go provide the backend services, RabbitMQ carries domain events, and WebSockets keep duels synchronized. A Next.js frontend consumes the gateway.
Technical implementation
The gateway centralizes routing and token validation. Services publish and consume events for activity completion, ranking updates, and duel state. The duel service pushes state over WebSockets so both players see the same progression.
Engineering decisions
- Service boundaries by domain
- Authentication, activities, and duels change at different rates; separating them limits blast radius and lets each service evolve independently.
- Async messaging for cross-domain events
- RabbitMQ decouples ranking and activity updates from the request path, trading immediate consistency for resilience.
- WebSockets for duels only
- Real-time transport is scoped to the feature that needs it, keeping the rest of the platform on conventional request/response.
Results
The platform demonstrates a working microservices topology with gateway routing, event-driven updates, and real-time duels. It is an academic project; no production load or adoption metrics are claimed.
Limitations
Distributed services add operational overhead. The project explores architecture patterns rather than operating at production scale.
Technologies
- FastAPI
- Go
- Next.js
- API Gateway
- RabbitMQ
- WebSockets