Welcome to Travaera, a modern, AI-powered travel itinerary planner designed to help users generate personalized travel plans with ease. Powered by Gemini and crafted with Vite, React, and TailwindCSS — Travaera offers a seamless, responsive, and interactive user experience.
- AI-Driven Travel Itinerary: Powered by Gemini, intelligently generates custom travel plans.
- Interactive TravelForm: Gather user inputs like destination, date, and preferences.
- Real-Time Itinerary Builder: Visualize travel days, activities, and stay plans.
- Chat Assistant: Embedded chatbot UI for conversational suggestions.
- Settings Dialog: Customize theme, preferences, and behavior.
- Reusable UI Components: Built using ShadCN-style UI components.
- Mobile-First Hooks: Responsive design with mobile support via
use-mobile. - Robust TypeScript Setup: TS config for app, node, and strict typing.
travaera/
├── public/ # Static assets (optional)
├── src/
│ ├── components/ # Custom and UI components
│ ├── hooks/ # Reusable React hooks
│ ├── lib/ # Gemini API integration & utilities
│ ├── pages/ # Page-level components (Index, NotFound)
│ ├── App.tsx # Main app entry
│ └── main.tsx # Vite bootstrap file
├── Dockerfile # Docker container setup
├── package.json # Project dependencies and scripts
├── vite.config.ts # Vite configuration
├── tailwind.config.ts # TailwindCSS config
├── tsconfig*.json # TypeScript configurations
└── README.md # Project documentation
git clone https://github.com/SushAN766/travaera.git
cd travaeranpm installnpm run devVisit http://localhost:5173 to view the app.
Build and run the app in a containerized environment:
# Build Docker image
docker build -t travaera .
# Run container
docker run -p 5173:5173 travaera"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint . --ext .ts,.tsx"
}- Framework: React
- Build Tool: Vite
- Language: TypeScript
- Styling: TailwindCSS + ShadCN UI
- AI API: Google Gemini (via
lib/gemini.ts) - State & Hooks: Zustand (if used), custom hooks
- Linting: ESLint
| Component | Description |
|---|---|
TravelForm |
Input form to collect travel details |
TravelItinerary |
UI to display generated itinerary |
Chat |
Gemini-powered assistant chat UI |
SettingsDialog |
Modal to customize app settings |
lib/gemini.ts |
Handles Gemini API interaction |
hooks/use-mobile.tsx |
Detects mobile devices for responsive UI |
This project uses Gemini API for generating travel suggestions and itinerary details. The lib/gemini.ts file abstracts the API logic. Make sure to set up your API credentials.
npm run lintEnsure your code follows project standards using the configured ESLint rules.
Pull requests and issues are welcome! For major changes, please open an issue first to discuss what you'd like to change.
Created by Sushanth BS — feel free to reach out for collaboration!