Blackhole Academy
Team
vleonel · asimao · nmendes · lrafael
Overview
Blackhole Academy is the capstone project for the 42 Common Core curriculum (ft_transcendence). It's a comprehensive online learning management system (LMS) that combines education, gamification, and social networking into a unified web application.
The platform spans three specialized user interfaces — Student, Instructor, and Administrator — each powered by its own Next.js application and backed by a single Spring Boot API. The architecture is fully containerized and deployed with a single 'make' command.


Key Features
- Three separate Next.js 16 frontend applications with role isolation (Student :3001, Instructor :3002, Admin :3003)
- Spring Boot 4 REST API with 25 controllers and Swagger/OpenAPI documentation
- 41-table PostgreSQL schema with 32 enums, managed by Flyway migrations
- Real-time WebSocket chat via STOMP — direct messages, group chat, communities, typing indicators, read receipts
- Gamification engine: XP system, tiered achievements, global/weekly/monthly leaderboards
- OAuth 2.0 authentication (Google, GitHub, 42) + TOTP 2FA with QR code generation
- Course delivery with modules and lessons (video, text, quiz formats)
- Admin dashboard: KPI cards, user management, course review workflows, analytics
- S3-compatible file storage via MinIO for avatars and course content
- Full observability stack: Prometheus metrics collection + Grafana dashboards
- Nginx reverse proxy with TLS termination, rate limiting (10r/s), and security headers
Technical Approach
A microservices-oriented architecture with Spring Boot serving multiple Next.js clients ensures modularity and scalability. PostgreSQL handles the complex relational model (users ↔ courses ↔ gamification ↔ social) with ACID guarantees.
Three separate frontend apps enforce role isolation at the deployment level. Each uses TanStack Query for server state management, Zustand for client stores, and shadcn/ui with Tailwind CSS for the component library.
Security is multi-layered: BCrypt password hashing, JWT with refresh token rotation, Spring Security RBAC (STUDENT/INSTRUCTOR/ADMIN), Nginx rate limiting, and Bucket4J API-level throttling. All secrets are managed via Docker secrets.
The entire infrastructure (10+ containers) is orchestrated via a single docker-compose.yml and launched with one 'make' command, including automatic secret generation, data directory creation, and image building.
Outcomes
- Successfully deployed as the 42 Common Core capstone project (ft_transcendence)
- 10+ containerized services running cohesively via Docker Compose
- Comprehensive real-time chat system modeled after WhatsApp's UX patterns
- Collaborative project completed by a team of 4 at 42 Luanda