Skip to content

timothyrusso/HolidAI

Repository files navigation

HolidAI Icon

HolidAI

A smart travel planning assistant that leverages Google Gemini AI to create personalized trip itineraries. Simply input your destination, travel dates, budget, and number of travelers to receive customized travel plans tailored specifically to your needs - eliminating hours of research and planning.

AI Model

HolidAI is powered by Google's Gemini 2.0 Flash model, a state-of-the-art large language model specifically optimized for fast, efficient responses while maintaining high-quality outputs. The model is particularly well-suited for travel planning tasks due to its:

  • Speed: The "Flash" variant is optimized for rapid response generation, ensuring quick itinerary creation
  • Context Understanding: Advanced natural language processing capabilities to understand complex travel requirements
  • Personalization: Ability to consider multiple factors like budget, preferences, and constraints when creating travel plans
  • Knowledge Base: Extensive training on travel-related data, including destinations, activities, and cultural information
  • Real-time Information: Integration with Google Search to provide up-to-date information about destinations, events, and travel conditions

The model processes user inputs through a carefully designed prompt engineering system that ensures consistent, relevant, and practical travel recommendations.

Features

  • 🤖 AI-Powered Planning: Get personalized travel itineraries generated by Google's Gemini AI
  • 📅 Smart Scheduling: Automatic day-by-day planning based on your preferences
  • 💰 Budget Management: Get recommendations that fit your budget constraints
  • 🗺️ Interactive Maps: Visualize your travel plans with integrated maps
  • 📱 Cross-Platform: Available on both iOS and Android devices

Tech Stack

  • Frontend: React Native with Expo
  • AI Integration: Google Gemini 2.0 Flash with Vercel AI SDK
  • Maps: Google Maps API and Apple Maps
  • Authentication: Clerk Authentication
  • Database: Convex
  • Client State Management: Zustand
  • Caching and Server State Management: Tanstack Query
  • Dependency Injection: tsyringe
  • Linting: Biome
  • Git hooks manager: Lefthook
  • Push Notifications: WIP - Expo Push Notifications

Screenshots

Home Page
Home Page
All Trips Page
Trip Detail Page
Profile Page
Home Page
Trip Detail Page
Trip Detail Page

Setup Instructions

To run this project, you'll need to:

  1. Add the following configuration files to the root project directory:

    • google-services.json (for Android)
    • GoogleService-Info.plist (for iOS)
  2. Create environment variables as specified in the .env.sample file.

These files contain necessary configuration for Google services integration and environment-specific settings.

Environment Variables

Create a .env file in the root directory with the following variables:

Firebase Configuration

  • FIREBASE_API_KEY: Your Firebase API key from the Firebase Console
  • FIREBASE_AUTH_DOMAIN: Your Firebase Auth domain (e.g., your-project.firebaseapp.com)
  • FIREBASE_PROJECT_ID: Your Firebase project ID
  • FIREBASE_STORAGE_BUCKET: Your Firebase storage bucket (e.g., your-project.appspot.com)
  • FIREBASE_MESSAGING_SENDER_ID: Your Firebase messaging sender ID
  • FIREBASE_APP_ID: Your Firebase app ID

To obtain these values:

  1. Go to the Firebase Console
  2. Create a new project or select an existing one
  3. Add a web app to your project
  4. The configuration values will be shown in the setup instructions

Google Services

  • GOOGLE_PLACES_API_KEY: API key for Google Places API
  • GOOGLE_MAPS_API_KEY_IOS: API key for Google Maps on iOS
  • GOOGLE_MAPS_API_KEY_ANDROID: API key for Google Maps on Android
  • GOOGLE_GEMINI_API_KEY: API key for Google Gemini AI

To obtain these values:

  1. Go to the Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable the required APIs (Places API, Geocoding, Maps SDK for iOS/Android, Gemini API)
  4. Create credentials (API keys) for each service

Other Services

  • RAPID_API_KEY: API key for RapidAPI (used for flight information)
    • Sign up at RapidAPI and subscribe to the Sky Scrapper API
  • UNSPLASH_ACCESS_KEY: API key for Unsplash (used for destination images)
  • MMKV_ENCRYPTION_KEY: A secure random string for encrypting local storage
    • Generate a secure random string (at least 32 characters)
  • CLERK_PUBLISHABLE_KEY: API key for Clerk authentication

Get started with the development build

  1. Install dependencies

    npm install
  2. Build the app

     npm run ios && npm run android
  3. Run the app

     npm run start

Contributing

We welcome contributions to HolidAI! Here's how you can help:

Finding Issues to Work On

We have a variety of open issues that need attention! You can find them in our Issues section. Issues are labeled with different categories:

  • 🐛 bug - Issues that need to be fixed
  • enhancement - New features or improvements
  • 📝 documentation - Documentation updates
  • 🎯 product - Product-related tasks and improvements
  • technical_improvement - Technical improvements, performance issues, or library updates

Feel free to pick up any issue that interests you. If you're new to the project, look for issues labeled with good first issue or help wanted.

Getting Started

  1. Fork the repository
  2. Clone your fork:
    git clone https://github.com/timothyrusso/HolidAI.git
  3. Create a new branch:
    git checkout -b feature/your-feature-name

Development Process

  1. Setup and run the project
  2. Make your changes
  3. Run tests (if available)
  4. Commit your changes with clear commit messages
  5. Push to your fork
  6. Create a Pull Request

Pull Request Guidelines

  • Ensure your PR description clearly describes the changes
  • Include screenshots for UI changes
  • Update documentation if necessary
  • Follow the existing code style
  • Make sure all tests pass

Code of Conduct

Please be respectful and considerate of others when contributing. We aim to foster an inclusive and welcoming community.

Questions?

Feel free to open an issue for any questions or concerns you might have about contributing.

About

Travel planner app that builds your trip plans with AI

Topics

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •