A microservices-based Pokemon TCG collection manager demonstrating event-driven architecture, service discovery, and API Gateway patterns.
Student: Mathias Alsos Paulsen Course: PG3402 Microservices Date: November 2025
See SETUP.md for complete setup instructions.
# Quick start
mvn clean package -DskipTests
docker compose up -dVisit: http://localhost:8888 (frontend served via Python HTTP server)
- API Gateway (8080) - Spring Cloud Gateway with rate limiting
- Catalog Service (8081) - Card metadata (read model)
- Collection Service (8082) - User collections (write model)
- Media Service (8084) - Python Flask image server
- Consul (8500) - Service discovery and centralized config
- PostgreSQL (5432/5433) - Database per service
- RabbitMQ (5672) - Asynchronous events
- Synchronous: REST/HTTP via API Gateway
- Asynchronous: RabbitMQ events (CardAdded, CardUpdated, CardRemoved)
- Spring Boot 3.2.0, Spring Cloud Gateway, Spring AMQP
- PostgreSQL 15, RabbitMQ 3.13, Redis, Consul
- Docker, Prometheus, Grafana
- Python Flask (media service)
- Vanilla JavaScript frontend
See SETUP.md for detailed testing and verification instructions.
- SETUP.md - Complete setup and testing instructions
- REFLECTION.md - Individual reflection and lessons learned
Mathias Alsos Paulsen | GitHub | Mathias.Alsos03@gmail.com