Tripply transforms the way you plan travel. Tell it where you want to go, your budget, travel style, and dates — and it generates a complete, day-by-day itinerary with hotels, restaurants, landmarks, and timing, all powered by a secure, provider-agnostic AI completions engine (supporting DeepSeek, OpenAI, etc.).
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| AI Engine | Universal OpenAI-Compatible API (DeepSeek, OpenAI, etc.) |
| Auth | Firebase Auth (Google Sign-In) |
| Database | Firebase Firestore |
| Styling | Tailwind CSS + custom design system |
| Places & Photos | Google Places API |
| Deployment | Vercel |
| Analytics | Vercel Analytics |
API keys are handled securely:
- AI & Places API keys → Server-only (Next.js API routes, never exposed to browser)
- Firebase key → Client-side (safe by design, protected by Firestore rules)
- Rate limiting on all API routes
Trip generation limits (tracked in Firestore, resets monthly):
| Anonymous | Signed In | |
|---|---|---|
| Trips/month | 3 | 7 |
- Node.js 18+
- Google Cloud account (Places API enabled)
- Firebase project (Auth + Firestore)
- OpenAI-compatible completions API (e.g. DeepSeek, OpenAI, OpenRouter)
git clone https://github.com/YuZaGa/Tripply.git
cd Tripply
npm installCreate a .env.local file in the root directory:
# Server-side only (API routes — never exposed to browser)
AI_API_KEY=your_universal_ai_api_key
AI_BASE_URL=https://api.deepseek.com
AI_MODEL=deepseek-v4-flash
GOOGLE_PLACES_API_KEY=your_google_places_api_key
# Firebase Admin SDK (server-side token verification)
FIREBASE_ADMIN_CLIENT_EMAIL=your_service_account_email
FIREBASE_ADMIN_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
# Client-side (bundled into browser JS)
NEXT_PUBLIC_GOOGLE_PLACE_API_KEY=your_google_places_api_key
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_keynpm run dev # Development server at http://localhost:3000
npm run build # Production build
npm start # Start production serverapp/
├── layout.jsx # Root layout (Header, Footer, AuthProvider)
├── page.jsx # Landing page
├── create-trip/page.jsx # Trip creation form
├── view-trip/[tripId]/page.jsx # Trip dashboard
└── api/
├── generate-trip/route.js # Universal AI proxy + usage enforcement
├── search-places/route.js # Places API proxy
└── usage/route.js # Usage stats for trip counter
components/
├── AuthContext.jsx # Google Sign-In context
├── Header.jsx # Nav with auth + trip counter badge
├── CreateTrip.jsx # Trip creation form
├── ViewTrip.jsx # Trip dashboard
└── ... # UI components
service/
├── firebaseConfig.jsx # Firebase client SDK
├── usageService.js # Server-side usage tracking (Firebase Admin)
├── AIModel.jsx # Legacy AI config (deprecated)
└── GlobalApi.jsx # Places API client
Open source under the MIT License.
Made with 💖 by YuZaGa
