This repository contains the source code and documentation for a GenAI-powered web application designed to deliver personal> Tip
The URLs are defined via Helm
values.yaml
– adjust theingress.host
field of each chart if you deploy to a different domain.
Additional detailed documentation, architectural diagrams, and API specifications can be found in the project's Confluence page.ravel itineraries using conversational AI to provide personalized attraction recommendation.
Travel planning can be complex and tedious. This project addresses the issue by creating highly personalized itineraries, optimizing according to multiple user preferences, and offering real-time, reliable recommendations via AI.
- Independent Travelers seeking personalized travel routes.
- Industry Partners (such as Ticket Booking Platforms) aiming to enhance their services with personalized route planning.
Interact naturally with an AI assistant to generate customized travel routes. Example:
- User input: "I have 5 days in Munich, architect fan and want to explore authentic local restaurants."
- Output: Personalized travel recommendation with explanation.
Routes are optimized based on user-defined preferences such as budget, scenic value, and accessibility. Preferences are persistently stored for continuous improvement over multiple sessions.
The system employs Retrieval-Augmented Generation (RAG) to recommend real-world attractions backed by current and verified information from reliable sources.
- Client Side: Built with React.js, interacts with users via intuitive conversational UI.
- Server Side: Spring Boot for core business logic.
- AI Components: GenAI model (LLMs with RAG integration) for conversational reasoning and recommendations.
- Persistence Layer: PostgreSQL database for storing user preferences and session data.
- Java 21 (for development setup)
- Node.js 18 or higher (for development setup)
- PostgreSQL (for development setup)
- Docker and Docker Compose (for Docker deployment - recommended)
- Python 3.11+ with Poetry (for GenAI service development)
-
Clone Repository
git clone git@github.com:AET-DevOps25/team-drop-database.git cd team-drop-database
-
Configure Environment Variables
Set up the necessary environment files for each service:
# Copy example environment files and configure them cp genai/.env.example genai/.env # Edit genai/.env file with your OpenAI API key and other configurations # Other services use environment variables defined in docker-compose.yml
-
One-Click Docker Deployment
For automatic deployment of all services:
# Option 1: Use the provided script (recommended) ./start-docker-all.sh # Option 2: Use docker-compose directly docker-compose up --build
This will automatically:
- Build and start all microservices (AuthService, AttractionService, UserService)
- Start the GenAI service
- Start the React frontend
- Set up PostgreSQL database with initial schema
- Configure all service networking and dependencies
-
Clone Repository
git clone git@github.com:AET-DevOps25/team-drop-database.git
-
Server Side Setup
cd server/AttractionService ./gradlew build
cd server/AuthService ./gradlew build
cd server/UserService ./gradlew build
before running the microservices, make sure to set up the PostgreSQL database and update the
application.properties
files with your database credentials. you should also specify the profile to be "dev" -
GenAI Service Setup
cd genai
Create and activate a virtual environment:
# Using venv (recommended) python -m venv venv source venv/bin/activate # On macOS/Linux # Or using conda conda create -n travelbuddy python=3.11 conda activate travelbuddy
Install dependencies:
# Install poetry if not already installed brew install poetry # On macOS # Install project dependencies poetry install # Download required language model python -m spacy download en_core_web_sm
Set up environment variables:
cp .env.example .env # Edit .env file with your API keys and configuration
-
Frontend Setup
cd client/travel-buddy npm install npm start
The project includes comprehensive testing for all components:
# Frontend tests only
cd client/travel-buddy
npm run test:ci
# Or use the convenience script
./test-frontend.sh
# Backend Java tests
cd server/AttractionService && ./gradlew test
cd server/AuthService && ./gradlew test
cd server/UserService && ./gradlew test
# Python/GenAI tests
cd genai && pytest -v
All tests run automatically in GitHub Actions on every push and pull request. The pipeline includes:
- Frontend React/TypeScript tests with Jest
- Backend Java unit tests with Gradle
- Python tests with pytest
- Access the application via
http://localhost:3000
or underhttps://travel-buddy.student.k8s.aet.cit.tum.de/
- Begin by providing preferences or directly interacting with the conversational AI.
Student Name | Responsibility |
---|---|
Shuaiwei Yu | 1. AuthService Implementation 2. Client Side Authentication & Conversation Page Implementation 3. Helm and K8S deployment |
Haochuan Huai | 1. GenAI Service Implementation 2. AWS Deployment 3. Backend Attraction Service API Implementation 4. Frontend Attraction Detail Page Implementation |
Zhiyuan Ni | 1. Attraction Service Implementation 2. Grafana and Prometheus Implementation 3. Helm and K8S Deployment and Debugging 4. Frontend List View Implementation |
Once the Helm charts are deployed on the TUM student cluster, the following public URLs are available:
Component | URL |
---|---|
Frontend | https://travel-buddy.student.k8s.aet.cit.tum.de |
Grafana (dashboards, alerting) | https://grafana.travel-buddy.student.k8s.aet.cit.tum.de |
Prometheus (raw metrics & targets) | https://prometheus.travel-buddy.student.k8s.aet.cit.tum.de |
Auth-Service API | https://auth-service.travel-buddy.student.k8s.aet.cit.tum.de/auth-service/api/v1 |
User-Service API | https://user-service.travel-buddy.student.k8s.aet.cit.tum.de/user-service/api/v1 |
Attraction-Service API | https://attr-service.travel-buddy.student.k8s.aet.cit.tum.de/attraction-service/api/v1 |
LLM-Service API | https://llm-service.travel-buddy.student.k8s.aet.cit.tum.de/api/v1 |
Tip
The URLs are defined via Helmvalues.yaml
– adjust theingress.host
field of each chart if you deploy to a different domain.
Additional detailed documentation, architectural diagrams, and API specifications can be found in the project’s Confluence page.