An intelligent travel planning application that compares flights, trains, buses, and self-drive options in real-time. Powered by Google Gemini AI with grounded search capabilities.
- 🤖 AI-Powered Route Planning - Google Gemini AI finds optimal routes with live pricing
- 🔍 Grounded Search - Real-time data from actual booking platforms
- 🚂 Multi-Modal Transport - Compare flights, trains, buses, and self-drive options
- 💰 Cost Breakdown - Detailed pricing analysis for each route
- 🎨 Kinetic UI - Beautiful animated interface with gooey navigation
- 🌙 Dark Theme - Eye-friendly dark mode design
- 👤 User Authentication - Secure login with Supabase
- ⭐ Favorites & History - Save and track your searches
- 📊 Visual Comparisons - Charts for price and duration analysis
- Node.js 20+ and npm
- Cloudflare account (for API proxy)
- Supabase account (for authentication)
- Google Gemini API key
# Clone the repository
git clone https://github.com/Asmithcodes/AetherWay-Travel-Planning.git
cd AetherWay-Travel-Planning
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env
# Edit .env with your credentialsCreate a .env file with:
# Supabase Configuration
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key-here
# Cloudflare Worker URL (after deployment)
VITE_WORKER_URL=https://aetherways-api-proxy.your-subdomain.workers.devnpm run devVisit http://localhost:3000
The app uses a Cloudflare Worker to proxy API requests and hide your Google API key.
cd cloudflare-worker
npm installnpx wrangler loginnpx wrangler secret put API_KEY
# Paste your Google Gemini API key when promptednpx wrangler deployCopy the deployed Worker URL (e.g., https://aetherways-api-proxy.your-subdomain.workers.dev) and add it to your .env as VITE_WORKER_URL.
-
Enable GitHub Pages:
- Go to Repository Settings → Pages
- Source: GitHub Actions
-
Add Secrets:
- Go to Settings → Secrets and variables → Actions
- Add these secrets:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYVITE_WORKER_URL
-
Push to main branch:
git push origin main
The GitHub Action will automatically build and deploy to:
https://asmithcodes.github.io/AetherWay-Travel-Planning/
-
Connect Repository:
- Import your GitHub repository in Netlify
-
Configure Build:
- Build command:
npm run build - Publish directory:
dist
- Build command:
-
Add Environment Variables:
- Add the same variables from
.env.example
- Add the same variables from
-
Deploy:
- Netlify will auto-deploy on every push
- Frontend: React 19 + TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Animation: Framer Motion
- AI: Google Gemini API
- Auth & Database: Supabase
- State Management: Zustand
- Charts: Recharts
- API Proxy: Cloudflare Workers
- Deployment: GitHub Pages / Netlify
aetherways/
├── components/
│ ├── Background/ # Kinetic background animations
│ ├── Navigation/ # Gooey navigation component
│ ├── UI/ # Reusable UI components
│ └── ...
├── services/
│ ├── geminiService.ts # AI route generation
│ ├── databaseService.ts # Supabase operations
│ └── supabaseClient.ts
├── store/
│ └── authStore.ts # Zustand auth state
├── cloudflare-worker/
│ ├── src/index.ts # Worker proxy logic
│ └── wrangler.toml # Worker configuration
├── .github/workflows/
│ └── deploy.yml # GitHub Pages deployment
└── App.tsx # Main application
If the Cloudflare Worker API key expires or reaches quota limits, users can enter their own Google API key through the Settings modal. The app implements a graceful fallback system:
- Primary: Cloudflare Worker proxy
- Fallback: User-provided API key (stored in localStorage)
- Error: Contact developer at
asmyth@duck.com
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Developed by Asmith
📧 asmyth@duck.com
Note: Remember to never commit your .env file. Always use environment variables for sensitive data.