A modern Java web application that recommends personalized tour packages based on user preferences. Built using Vaadin Flow, Spring Boot, and MongoDB.
- 🔐 User Authentication (Login / Logout)
- 🎯 Personalized Tour Recommendations
- 🔍 Trip Type Filtering (Adventure, Relaxation, Cultural, etc.)
- 📋 Preference Management (budget, dates, accommodation, food)
- 📦 Dynamic Package Display using Vaadin Cards
- 📱 Responsive UI built entirely in Java (Vaadin Flow)
- 🌐 Admin/Custom control over tour packages via MongoDB
| Layer | Technology |
|---|---|
| UI | Vaadin Flow (Java-based UI framework) |
| Backend | Spring Boot (REST-ready) |
| Database | MongoDB (NoSQL) using Spring Data |
| Styling | Custom CSS with CSS Variables |
| Authentication | Custom AuthService |
| Build Tool | Maven |
| Language | Java 17+ |
src/
├── main/
│ ├── java/
│ │ ├── org.vaadin.example/
│ │ │ ├── model/ # Data models (UserPreferences, TourPackage)
│ │ │ ├── repositories/ # MongoDB Repositories
│ │ │ ├── service/ # Filtering & Auth Services
│ │ │ ├── layout/ # MainLayout (Sidebar, Navigation)
│ │ │ └── views/ # UI Views (Dashboard, Preferences, etc.)
│ └── resources/
│ └── application.properties # MongoDB config
git clone https://github.com/your-username/itinerary-planner.git
cd itinerary-plannerSet your MongoDB URI in application.properties:
spring.data.mongodb.uri=mongodb://localhost:27017/itinerary_plannerUse your IDE or terminal:
./mvnw spring-boot:runAccess the app at:
📍 http://localhost:8080
- Tour packages and preferences can be seeded via MongoDB Compass or CLI.
- Sample package structure:
{
"packageId": "goa_adventure_3d_15k",
"destination": "Goa",
"budgetRange": [10000, 15000],
"tripType": "Adventure",
"tripDuration": 3,
"accommodation": {
"type": "Resort",
"budgetAllocation": 5000,
"ratings": [3, 4],
"amenities": ["WiFi", "Breakfast"]
}
}- 📍 Google Maps Integration for destinations
- 🧠 AI-powered smart recommendations
- 📅 Custom Itinerary Planner