A microservices-based ticketing system built with Spring Boot and Spring Cloud.
tickon-api/
├── common/ # Shared models and utilities
├── services/
│ ├── eureka-server/ # Service discovery server
│ ├── api-gateway/ # API Gateway (port 8080)
│ ├── event-service/ # Event management service (port 8081)
│ └── user-service/ # User management service (port 8082)
├── docker-compose.yml # Docker compose for local development
├── prometheus.yml # Prometheus configuration
└── pom.xml # Parent POM
- Eureka Server (8761): Service discovery
- API Gateway (8080): Single entry point for all microservices
- Event Service (8081): Manages events and ticketing
- User Service (8082): User authentication and management
- Java 21
- Maven 3.8+
- Docker & Docker Compose
# Build all modules
mvn clean package
# Build with Docker
docker-compose build# Start all services
docker-compose up
# Or run individual services
mvn spring-boot:run -pl services/eureka-server
mvn spring-boot:run -pl services/api-gateway
mvn spring-boot:run -pl services/event-service
mvn spring-boot:run -pl services/user-service- Eureka Dashboard: http://localhost:8761
- API Gateway: http://localhost:8080
- Event Service: http://localhost:8081
- User Service: http://localhost:8082
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin)
- Events:
http://localhost:8080/api/events - Users:
http://localhost:8080/api/users
Each service can be developed independently. The common module contains shared models and utilities.
- Create a new module under
services/ - Add the module to the parent POM
- Configure the service with Eureka client
- Add routing rules in the API Gateway
- Update docker-compose.yml
- Actuator endpoints exposed for health checks
- Prometheus metrics available at
/actuator/prometheus - Grafana dashboards for visualization# tickon-api