A full-stack hotel booking application using Spring Boot (Java) for the backend and Angular (TypeScript) for the frontend. Integrates AI-powered chat and document retrieval using Azure OpenAI and PGVector.
- AI-powered chat assistant for guests
- RAG (Retrieval-Augmented Generation) with vector search (PGVector) for Terms of Service
- MCP with direct integration with booking tools for real-time operations
- Memory Management for persistent conversation history across chat sessions
- Java, Spring Boot, Spring AI
- Angular, TypeScript, SCSS
- PostgreSQL, PGVector
- Azure OpenAI (GPT, Embeddings)
- Docker Compose
- Java 24+
- Node.js 18+ & npm
- Maven
- Docker & Docker Compose
- Azure OpenAI API key
git clone https://github.com/ERNI-Academy/spring-ai-hotel-booking.git
cd spring-ai-hotel-booking- Configure environment variables:
AZURE_OPENAI_API_KEYDB_PASSWORD
- Start PostgreSQL (or use Docker Compose):
docker compose up -d- Build and run the backend:
./mvnw spring-boot:runcd frontend
npm install
npm startThe Angular app will be available at http://localhost:4200.
- Swagger/OpenAPI:
http://localhost:8080/swagger-ui.html - Health:
http://localhost:8080/actuator/health - Metrics:
http://localhost:8080/actuator/metrics
Edit src/main/resources/application.yml for backend settings (database, AI, logging, etc.).
spring-ai-hotel-booking/
├── src/main/java/com/erni/springaihotel/
│ ├── controller/ # REST controllers
│ ├── service/ # Business logic and AI services
│ └── model/ # Data models
├── src/main/resources/
│ ├── application.yml # Application configuration
│ └── rag/ # RAG documents
├── frontend/
│ ├── src/app/
│ │ ├── components/ # Angular components
│ │ ├── services/ # Angular services
│ │ └── types/ # TypeScript interfaces
│ └── package.json
├── compose.yaml # Docker Compose configuration
└── pom.xml # Maven configuration
See LICENSE.
Author: raffaele-auriemma