The backend consists of 3 independent Spring Boot microservices behind an API Gateway:
- api-gateway (port 8080): Routes all incoming requests to the appropriate service
- user-service (port 8081): User management
- course-service (port 8082): Mock TUM course database (source of truth for university courses)
- roadmap-service (port 8083): Personalized learning roadmap generation and tracking
Each service has:
- Its own PostgreSQL database (userdb, coursedb, roadmapdb)
- Independent entity models with auto-created schema
- REST API endpoints
Entity Relationships: See the UML diagram in /server/docs/ for complete data model and relationships.
The fastest way to run the entire stack. Requires Docker Desktop with Kubernetes enabled.
- Docker Desktop with Kubernetes enabled
- Docker Desktop → Settings → Kubernetes → Enable Kubernetes → Apply & Restart
kubectl get nodes
# Expected: docker-desktop Ready control-planemake k8s-deployThis builds all 5 Docker images and applies all Kubernetes manifests automatically. Waits until all pods are ready.
make k8s-status- React Client: http://localhost:30000
- API Gateway: http://localhost:30080
make k8s-downRuns the full stack with a single command. No Kubernetes required.
- Docker Desktop (must be open and running)
make docker-up- React Client: http://localhost:3000
- API Gateway: http://localhost:8080
make docker-downmake docker-resetFor active development without Docker for the services.
- Docker Desktop (for PostgreSQL only)
- Miniconda or Anaconda
- Java 25 (included in conda environment)
conda env create -f environment.yml
conda activate team-devvoppsconda activate team-devvopps
cd server
docker-compose upThis starts PostgreSQL on port 5432 with 3 databases: userdb, coursedb, roadmapdb.
make devAll 4 services start in the background. Logs are written to logs/ directory:
tail -f logs/user-service.log
tail -f logs/api-gateway.logTo stop all services:
make dev-stopServices available at:
- API Gateway: http://localhost:8080
- user-service: http://localhost:8081
- course-service: http://localhost:8082
- roadmap-service: http://localhost:8083
conda activate team-devvopps
cd client
npm install
npm run devFrontend available at: http://localhost:3000
conda activate team-devvopps
cd server/course-service
python3 fetch_and_seed_courses.py # macOS/Linux
python fetch_and_seed_courses.py # WindowsFetches ~930 courses from the TUM Campus Online API into coursedb. Only needs to be run once.
cd server
docker-compose down
docker volume rm server_postgres_dataThen repeat steps 2–5.