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

Architecture Overview

Architecture Diagram.jpg

🧩 Microservices

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

🛠️ Tech Stack

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

✨ Features