A production-grade Hotel Booking System built with a microservices architecture using Spring Boot and Spring Cloud. The system features centralized authentication via Okta/Auth0, dynamic service discovery, a cloud config server, and an aggregator service that composes data from multiple downstream services using Feign Client.
📌 Table of Contents

| Service | Port | Description |
|---|---|---|
| API Gateway | 8084 | Single entry point; validates JWT tokens issued by Okta/Auth0 before routing |
| Service Registry | 8761 | Eureka server — all services register and discover each other dynamicall |
| Config Server | 8085 | Centralized Spring Cloud Config — manages external configuration for all user , hotel , Rating Service |
| User Service | 8081 | Manager user Profile and User Address |
| Hotel Service | 8082 | Manages hotel listings, details, and availability |
| Rating Service | 8083 | Handles hotel ratings and reviews submitted by users |
| Aggerator Service | 8086 | Composes full user profile by calling User, Hotel & Rating services via Feign Client with a JWT Feign Interceptor |
| Category | Technology |
|---|---|
| Language | Java |
| Framework | Spring Boot |
| API Gateway | Spring Cloud Gateway |
| Service Discovery | Spring Cloud Netflix Eureka |
| Config Management | Spring Cloud Config Server |
| Inter-Service Comm | OpenFeign (with JWT Interceptor) |
| Authentication | Okta / Auth0 (OAuth2 + JWT) |
| Cloud | AWS (S3) |
| Database | MySQL |
| ORM | Spring Data JPA / Hibernate |
| Mapper | MapStruct |
| Tracing | Zipkin |
| Build Tool | Maven |