Back to Work
2026

Waypt

An AI-powered travel planner for collaborative, route-aware itineraries.

Waypt travel-planning dashboard and collaborative itinerary workspace

Problem

Planning a trip often means switching between notes, maps, spreadsheets, weather forecasts, and group chats. Travelers need one place to organize a realistic schedule, understand routes and costs, and coordinate changes without losing context.

Solution

Built Waypt, a responsive travel-planning PWA that turns destinations, dates, accommodation, and traveler preferences into structured itineraries with Gemini. Trips combine collaborative editing, Google Maps routes, budget tracking, weather and currency context, reusable templates, and polished PDF exports.

Impact

  • 15.6K
    Lines of TypeScript, written solo
  • 4
    Server-side API routes
  • 14 days
    Longest itinerary generated

Tech Stack

Next.js 16TypeScriptSupabaseGoogle GeminiGoogle MapsGSAPjsPDFPWA

Approach

  • 1

    Used Supabase for authenticated trip data, collaborator roles, activity history, and real-time collaboration updates

  • 2

    Built the Gemini generation pipeline as a server-side Next.js API route so the API key never reaches the browser, with exponential-backoff retries on transient 503s (and deliberately none on 429 quota errors), strict JSON parsing, and field whitelisting

  • 3

    Integrated Google Maps geocoding and route calculation for walking, transit, and driving between itinerary activities

  • 4

    Combined itinerary scheduling with budgets, destination-aware currency conversion, live weather context, reusable templates, and PDF export

  • 5

    Delivered the experience as a responsive installable PWA with a dedicated administration and trip-moderation workspace

  • 6

    Source is private, but I am glad to walk through the code or share access on request

Challenges & Solutions

Turning unpredictable AI output into itinerary data that could be saved safely

Added retry handling for temporary Gemini outages, rejected invalid response shapes, filtered unusable activities, and whitelisted every field before inserting generated items into Supabase.

Keeping route options accurate when mapping APIs return misleading transit results

Validated transit responses for real transit legs, discarded walking-only fallbacks labeled as transit, and cached valid routes between consecutive activities.

Supporting collaborative planning without allowing edits to bypass trip ownership

Implemented collaborator roles, real-time membership updates, owner approval states, activity logs, and notifications for proposed itinerary changes.