Inspiration
Maharashtra is home to incredible adventure tourism—from the towering treks of the Sahyadris to the pristine water sports of Tarkarli. However, the ecosystem is heavily fragmented. Travelers face hidden costs, scattered itineraries, and unverified operators, while local operators lack digital tools to manage bookings. I was inspired to build a centralized, "startup-ready" platform that bridges this gap. I wanted to eliminate the endless scrolling and research fatigue by combining AI intelligence with real-world booking capabilities, ensuring users can discover, plan, and pay for their adventures in one seamless flow.
What it does
Adventures365 is a comprehensive, interactive weekend getaway marketplace.
Interactive Discovery: Users explore Maharashtra via a dynamic Google Map. Selecting a district (e.g., Raigad) auto-zooms the map and renders top-rated spots using an elegant, Myntra-style UI.
AI Trip Planner: Powered by Google Gemini, the platform acts as a virtual travel agent. It asks about your budget, duration, and transport preferences to generate a highly personalized, day-by-day itinerary.
Zero Fake Data: The platform uses web scraping and RapidAPI to fetch real-time pricing and availability for buses (RedBus), cabs (Ola/Uber), and stays (OYO/Airbnb).
Unified Checkout: Users add their chosen AI itinerary, hotel, and transit to a Zustand-managed cart, completing the transaction securely via Razorpay.
How we built it
I built this project focusing on a modern, high-performance tech stack:
Frontend: Next.js (App Router) and Tailwind CSS for a premium, light-themed, highly interactive UI with smooth CSS micro-interactions (no default dark modes).
State Management: Replaced Redux with Zustand for lightweight, real-time cart state management across multiple booking steps.
Maps & Visuals: Integrated @react-google-maps/api alongside Google Places & Geocoding APIs for location discovery and real-time route plotting.
AI Engine: Utilized the Gemini 1.5 Pro API using strict JSON-structured prompting to ensure the AI's itinerary output could be parsed perfectly into the frontend UI components.
Backend & Payments: Built Next.js serverless API routes to handle web scraping for real-time prices and handle secure Razorpay checkout verification. Data persistence for operators is handled via Firebase.
Challenges we ran into
Next.js Server-Side Rendering (SSR) Crashes: Integrating heavy client-side libraries like Google Maps caused hydration errors. I solved this by dynamically importing the map components and strictly enforcing "use client" boundaries.
Structuring AI Outputs: Initially, the Gemini API returned raw markdown which broke the UI. I overcame this by engineering a strict JSON schema prompt, forcing the LLM to return structured data that Next.js could seamlessly map into the timeline UI.
Real-Time Data without CAPTCHAs: Scraping live data from travel sites often triggered bot protections. I adapted by integrating RapidAPI fallbacks to fetch real OYO and Uber data without relying on dummy JSON files, keeping the MVP highly authentic for the judges.
Accomplishments that we're proud of
I am incredibly proud of building a functional, real-world MVP that doesn't rely on fake data. Achieving a butter-smooth, premium user interface while successfully orchestrating multiple complex APIs (Google Maps, Gemini, Razorpay, and Live Scrapers) into a single Zustand cart flow is a major technical win.
What we learned
This project drastically improved my skills in Next.js App Router patterns and API route security. I learned how to use Zustand for global state management, which proved much faster than Redux for shopping carts. Most importantly, I learned how to "tame" Large Language Models by forcing JSON-structured outputs, turning generative AI into a reliable backend utility.
What's next for Adventures365
The immediate next step is building out the localized Operator Dashboard, giving on-ground guides a dedicated mobile app to manage their bookings and update live availability. I also plan to integrate the WhatsApp Business API to automatically send users their PDF itineraries, QR tickets, and Google Maps routing links the moment their Razorpay payment clears.
Built With
- firebase
- gemini-api
- google-maps
- google-places
- next.js
- node.js
- rapidapipuppeteer
- razorpay
- react
- tailwind-css
- typescript
- zustand
Log in or sign up for Devpost to join the conversation.