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.
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.
- 🤖 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
- 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
Home Page![]() |
All Trips Page![]() |
Profile Page![]() |
Trip Detail Page![]() |
To run this project, you'll need to:
-
Add the following configuration files to the root project directory:
google-services.json(for Android)GoogleService-Info.plist(for iOS)
-
Create environment variables as specified in the
.env.samplefile.
These files contain necessary configuration for Google services integration and environment-specific settings.
Create a .env file in the root directory with the following variables:
FIREBASE_API_KEY: Your Firebase API key from the Firebase ConsoleFIREBASE_AUTH_DOMAIN: Your Firebase Auth domain (e.g.,your-project.firebaseapp.com)FIREBASE_PROJECT_ID: Your Firebase project IDFIREBASE_STORAGE_BUCKET: Your Firebase storage bucket (e.g.,your-project.appspot.com)FIREBASE_MESSAGING_SENDER_ID: Your Firebase messaging sender IDFIREBASE_APP_ID: Your Firebase app ID
To obtain these values:
- Go to the Firebase Console
- Create a new project or select an existing one
- Add a web app to your project
- The configuration values will be shown in the setup instructions
GOOGLE_PLACES_API_KEY: API key for Google Places APIGOOGLE_MAPS_API_KEY_IOS: API key for Google Maps on iOSGOOGLE_MAPS_API_KEY_ANDROID: API key for Google Maps on AndroidGOOGLE_GEMINI_API_KEY: API key for Google Gemini AI
To obtain these values:
- Go to the Google Cloud Console
- Create a new project or select an existing one
- Enable the required APIs (Places API, Geocoding, Maps SDK for iOS/Android, Gemini API)
- Create credentials (API keys) for each service
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)- Sign up at Unsplash Developers to get an access key
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
-
Install dependencies
npm install
-
Build the app
npm run ios && npm run android -
Run the app
npm run start
We welcome contributions to HolidAI! Here's how you can help:
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.
- Fork the repository
- Clone your fork:
git clone https://github.com/timothyrusso/HolidAI.git
- Create a new branch:
git checkout -b feature/your-feature-name
- Setup and run the project
- Make your changes
- Run tests (if available)
- Commit your changes with clear commit messages
- Push to your fork
- Create a Pull Request
- 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
Please be respectful and considerate of others when contributing. We aim to foster an inclusive and welcoming community.
Feel free to open an issue for any questions or concerns you might have about contributing.



