Skip to content

Chandangowdatk/goWanderLust

Repository files navigation

🌍 GoWanderLust - AI-Powered Personalized Trip Planner

An intelligent, full-stack travel planning application that leverages Google's Vertex AI Agent Engine and Firebase to deliver hyper-personalized trip recommendations, real-time itinerary optimization, and seamless booking experiences.

Firebase React Python FastAPI Google Cloud


πŸš€ Key Features

πŸ” Authentication & User Management

  • Google OAuth - One-click sign-in with Google accounts
  • Email/Password - Traditional authentication with email verification
  • User Profiles - Comprehensive profile management with travel preferences
  • Auto Profile Photos - Automatic Google profile picture integration
  • Secure Sessions - Firebase Authentication with ID tokens

πŸ€– AI-Powered Trip Planning

  • Multi-Agent System - Specialized AI agents for different travel aspects:
    • πŸ—ΊοΈ Destination Suggester - Personalized destination recommendations
    • πŸ“… Trip Planning Agent - Intelligent itinerary generation
    • 🎨 Personalization Agent - Customized experiences based on preferences
    • πŸ“Š Data Aggregator - Real-time travel data integration
    • 🎯 Optimization Agent - Route and budget optimization
    • πŸ“± Real-time Monitoring - Live updates and disruption management
    • πŸ’³ Booking Agent - Streamlined reservation handling

πŸ’¬ Interactive Chat Interface

  • Real-time conversational trip planning
  • Destination suggestion cards with rich details
  • Message history and context awareness
  • WebSocket support for live updates

πŸ‘€ User Experience

  • Beautiful, modern UI with Framer Motion animations
  • Responsive design (mobile, tablet, desktop)
  • Profile dropdown with quick actions
  • Travel preferences management (style, budget, interests)
  • Trip history and statistics

πŸ—οΈ Architecture

Hybrid Backend Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Frontend (React)                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Landing    β”‚  β”‚  Chat        β”‚  β”‚  Profile         β”‚  β”‚
β”‚  β”‚  Page       β”‚  β”‚  Interface   β”‚  β”‚  Management      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚                β”‚                β”‚
             β–Ό                β–Ό                β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Firebase Services                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Auth         β”‚  β”‚ Firestore    β”‚  β”‚ Cloud           β”‚  β”‚
β”‚  β”‚ (Google/     β”‚  β”‚ (User Data,  β”‚  β”‚ Functions       β”‚  β”‚
β”‚  β”‚ Email)       β”‚  β”‚ Sessions)    β”‚  β”‚ (Triggers)      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             β”‚
                             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   FastAPI Backend (Python)                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚             Vertex AI Agent Engine                   β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚
β”‚  β”‚  β”‚ Planning   β”‚  β”‚ Booking     β”‚  β”‚ Real-time    β”‚ β”‚  β”‚
β”‚  β”‚  β”‚ Agents     β”‚  β”‚ Agents      β”‚  β”‚ Monitoring   β”‚ β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚           Google Places API Client                   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Why Hybrid?

  • Firebase: User authentication, data persistence, hosting, and real-time capabilities
  • FastAPI Backend: AI agent orchestration, complex business logic, Google Cloud integrations
  • Best of Both Worlds: Serverless scalability + AI power + cost efficiency

πŸ› οΈ Tech Stack

Frontend

  • React 18 - Modern UI library
  • React Router - Client-side routing
  • Tailwind CSS - Utility-first styling
  • Framer Motion - Smooth animations
  • Lucide React - Beautiful icons
  • React Hot Toast - Notifications
  • React Query - Data fetching and caching
  • React Hook Form - Form validation

Backend

  • FastAPI - High-performance Python web framework
  • Google Vertex AI - Agent Engine for AI orchestration
  • Google ADK (Agent Development Kit) - Multi-agent system
  • Google Places API - Travel data and recommendations
  • Python 3.12+ - Modern Python runtime

Firebase Services

  • Firebase Authentication - User auth (OAuth, Email/Password)
  • Cloud Firestore - NoSQL database for users, chats, trips
  • Firebase Hosting - Static site hosting for React app
  • Cloud Functions - Serverless backend functions
  • Cloud Storage - User-uploaded content

Deployment

  • Firebase Hosting - Frontend deployment
  • Google Cloud Run - Backend containerized deployment
  • GitHub Actions - CI/CD pipelines (future)

πŸ“¦ Installation & Setup

Prerequisites

  • Node.js 18+ and npm
  • Python 3.12+
  • Firebase CLI (npm install -g firebase-tools)
  • Google Cloud SDK (for backend deployment)
  • Firebase project with Authentication and Firestore enabled

1. Clone the Repository

git clone https://github.com/Chandangowdatk/Personalized-Trip-Planner.git
cd Personalized-Trip-Planner

2. Firebase Setup

Create Firebase Project

  1. Go to Firebase Console
  2. Create a new project: gowanderlust
  3. Enable Authentication (Google, Email/Password)
  4. Enable Cloud Firestore
  5. Create a web app to get configuration

Configure Firestore Security Rules

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
    match /sessions/{sessionId} {
      allow read, write: if request.auth != null;
    }
    match /itineraries/{itineraryId} {
      allow read, write: if request.auth != null;
    }
  }
}

3. Frontend Setup

cd frontend

# Install dependencies
npm install

# Create .env.local file
cat > .env.local << EOF
# Firebase Configuration (from Firebase Console)
REACT_APP_FIREBASE_API_KEY=your_api_key_here
REACT_APP_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_project_id.firebasestorage.app
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_id
REACT_APP_FIREBASE_MEASUREMENT_ID=your_measurement_id

# Backend API URL
REACT_APP_API_URL=http://localhost:8000
EOF

# Start development server
npm start

Frontend will be available at http://localhost:3000

4. Backend Setup

cd backend

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Create .env file
cat > .env << EOF
# Google Cloud Configuration
GOOGLE_CLOUD_PROJECT=your_project_id
VERTEX_AI_LOCATION=us-central1

# Google Places API
GOOGLE_PLACES_API_KEY=your_places_api_key

# Firebase Admin SDK
FIREBASE_SERVICE_ACCOUNT_KEY=path/to/service-account-key.json
EOF

# Run backend server
uvicorn main:app --reload

Backend will be available at http://localhost:8000

5. Agent System Setup

cd agent/personalizedTripPlanner

# Install with uv (recommended)
uv pip install -e .

# Or with pip
pip install -e .

# Test deployment (optional)
cd deployment
python test_deployment.py

🎯 Usage

1. Sign Up / Sign In

  • Visit http://localhost:3000
  • Click "Get Started"
  • Choose Google Sign-in or Email/Password

2. Plan a Trip

  • Navigate to Chat Interface
  • Describe your travel preferences
  • AI agents will provide personalized recommendations
  • Review destination suggestions with details

3. Manage Profile

  • Click on profile picture in header
  • Navigate to "My Profile"
  • Update travel preferences (style, budget, interests)
  • View trip statistics

4. Explore Features

  • View trip history
  • Save favorite destinations
  • Get real-time updates
  • Book accommodations (coming soon)

πŸ“‚ Project Structure

Personalized-Trip-Planner/
β”œβ”€β”€ frontend/                      # React Frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/           # UI Components
β”‚   β”‚   β”‚   β”œβ”€β”€ LandingPage.js   # Landing page
β”‚   β”‚   β”‚   β”œβ”€β”€ HomePage.js      # Dashboard
β”‚   β”‚   β”‚   β”œβ”€β”€ ChatInterface.js # Chat UI
β”‚   β”‚   β”‚   β”œβ”€β”€ AuthModal.js     # Authentication modal
β”‚   β”‚   β”‚   └── ProfilePage.js   # User profile
β”‚   β”‚   β”œβ”€β”€ contexts/            # React Contexts
β”‚   β”‚   β”‚   β”œβ”€β”€ AuthContext.js   # Auth state
β”‚   β”‚   β”‚   └── ChatContext.js   # Chat state
β”‚   β”‚   β”œβ”€β”€ services/            # API Services
β”‚   β”‚   β”‚   β”œβ”€β”€ firebase.js      # Firebase init
β”‚   β”‚   β”‚   β”œβ”€β”€ authService.js   # Auth methods
β”‚   β”‚   β”‚   β”œβ”€β”€ userService.js   # User CRUD
β”‚   β”‚   β”‚   └── api.js           # Backend API
β”‚   β”‚   └── App.js               # Main app
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ package.json
β”‚   └── .env.local               # Firebase config
β”‚
β”œβ”€β”€ backend/                      # FastAPI Backend
β”‚   β”œβ”€β”€ main.py                  # API endpoints
β”‚   β”œβ”€β”€ requirements.txt
β”‚   └── .env                     # Backend config
β”‚
β”œβ”€β”€ agent/                       # AI Agent System
β”‚   └── personalizedTripPlanner/
β”‚       β”œβ”€β”€ personalized_trip_planner/
β”‚       β”‚   β”œβ”€β”€ agent.py         # Root agent
β”‚       β”‚   β”œβ”€β”€ prompt.py        # Agent prompts
β”‚       β”‚   └── subagents/       # Specialized agents
β”‚       β”‚       β”œβ”€β”€ destinationSuggester/
β”‚       β”‚       β”œβ”€β”€ Planning/
β”‚       β”‚       β”œβ”€β”€ Booking/
β”‚       β”‚       β”œβ”€β”€ Personalization/
β”‚       β”‚       β”œβ”€β”€ DataAggregator/
β”‚       β”‚       β”œβ”€β”€ Optimization/
β”‚       β”‚       └── RealtimeMonitoring/
β”‚       └── deployment/          # Deployment scripts
β”‚
β”œβ”€β”€ requirements.txt             # Python dependencies
β”œβ”€β”€ .gitignore
└── README.md                    # This file

πŸ”§ Development

Running Tests

# Frontend tests
cd frontend
npm test

# Backend tests
cd backend
pytest

# Agent tests
cd agent/personalizedTripPlanner/deployment
python test_deployment.py

Code Quality

# Frontend linting
cd frontend
npm run lint

# Backend linting
cd backend
flake8 .
black .

Building for Production

# Frontend build
cd frontend
npm run build

# Backend Docker image
cd backend
docker build -t trip-planner-backend .

πŸš€ Deployment

Frontend (Firebase Hosting)

cd frontend

# Build production bundle
npm run build

# Deploy to Firebase
firebase deploy --only hosting

Backend (Google Cloud Run)

cd backend

# Build and deploy
gcloud run deploy trip-planner-backend \
  --source . \
  --region us-central1 \
  --allow-unauthenticated \
  --set-env-vars GOOGLE_CLOUD_PROJECT=your_project_id

Agent System (Vertex AI)

cd agent/personalizedTripPlanner/deployment

# Deploy agent
python deploy.py

🌟 Features Roadmap

βœ… Phase 1: Authentication & User Management (COMPLETED)

  • Firebase Authentication integration
  • Google OAuth sign-in
  • Email/Password authentication
  • User profile management
  • Travel preferences system
  • Profile photo integration

πŸ”„ Phase 2: Chat History & Persistence (IN PROGRESS)

  • Firestore chat session storage
  • Message history persistence
  • Session recovery
  • Multi-device sync

πŸ“… Phase 3: Itinerary Management

  • Save itineraries to Firestore
  • Edit and customize itineraries
  • Share itineraries
  • Export to PDF/Calendar

πŸ’³ Phase 4: Booking Integration

  • Hotel booking API integration
  • Flight search and booking
  • Activity reservations
  • Payment processing

πŸ“Š Phase 5: Advanced Features

  • Collaborative trip planning
  • Budget tracking and optimization
  • Travel recommendations engine
  • Mobile app (React Native)

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Google Cloud Platform - Vertex AI, Cloud Run, Firebase
  • Google Places API - Travel data and recommendations
  • React Community - Frontend framework and ecosystem
  • FastAPI Community - Backend framework

πŸ“ž Contact

Chandan Gowda TK


πŸ”— Useful Links


Built with ❀️ using AI and Modern Web Technologies
Transforming travel planning with intelligent automation

About

AI-powered-Personalized-Trip-Planner

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published