Inspiration

Planning a multi-city trip usually means juggling five browser tabs: one spreadsheet for dates, another for hotels, a third for flights, and a group chat to keep your partner in sync. Most tools optimize for one booking — a single hotel or a single flight — not a chain of cities with linked check-ins, transfers, and shared context.

I built SplitStay for travelers who hop between cities on one journey (friends, couples, solo backpackers) and need one place to see the whole plan: where they stay, how they move between cities, what's booked, and what's still missing.

What it does

SplitStay is a multi-city trip planner deployed on Vercel:

  • Trip wizard — Add legs (city, country, dates); check-out auto-links to the next check-in
  • Timeline builder — Gap/overlap detection, leg status chips, next actions
  • Hotel booking — Live LiteAPI rates per leg; in-app prebook → book (sandbox); nearby-city fallback when a destination has sparse inventory(monitizable with booking.coms partnership program)
  • Transport hub — Flights via LiteAPI between major hubs (e.g. JFK → ORD → LAX); ground transport via outbound links; save confirmation refs on each segment
  • Trip overview — Progress, total cost, interactive map (MapLibre + Mapbox)
  • Share link — Public read-only itinerary at /share/[token] for a travel partner

Canonical demo route: US Summer — New York → Chicago → Los Angeles (Aug 1–11, 2026). Trip metadata, legs, transfers, and share tokens persist in Amazon Aurora PostgreSQL. Hotel and flight rates are fetched from LiteAPI at runtime.

How I built it

Layer Tech
Frontend Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS v4
Auth Clerk
Database Amazon Aurora PostgreSQL (Vercel Marketplace)
ORM Drizzle
Deploy Vercel
DB auth Vercel OIDC → AWS IAM → RDS auth tokens (no long-lived AWS keys in the app)
Hotels & flights LiteAPI
Maps MapLibre GL JS + Mapbox (OSM fallback)
Geocoding geocoded.me + Mapbox

Challenges we ran into

Architecture: Browser → Next.js on Vercel → authenticated API routes → Aurora (trip state) + LiteAPI (live inventory) + Clerk (users). I designed the UI from Stitch mockups, pushed the schema with Drizzle + IAM auth, and connected Aurora through the Vercel Marketplace integration so production uses short-lived OIDC credentials instead of static AWS keys.

Accomplishments that I am proud of

  • A working end-to-end flow on a live Vercel URL: sign in → create multi-leg trip → book a hotel → search flights → share itinerary
  • Real persistence in Aurora — not mock data — with IAM/OIDC auth wired for serverless
  • Live LiteAPI integration for hotel search, prebook, book, and flight rates (not static placeholders)
  • Timeline validation that catches gaps and missing hotels/transfers before travel day
  • Shareable public itinerary with Open Graph metadata for messaging apps
  • Resilient hotel search for edge cases (nearby radius, nearest city, rate-error retry)
  • A cohesive UI built from design specs, not a generic template

What I learned

  • Marketplace integrations are project-scoped — Aurora env vars from one Vercel project don't transfer to another; Storage must be connected per project.
  • Environment variables require a redeploy after changing Vercel settings — updating the dashboard alone isn't enough.
  • Serverless + IAM DB auth needs connection pooling discipline (token expiry, max lifetime, pool reset on auth failures).
  • Demo data matters — choose cities with real API coverage (US hubs for flights) so judges see live behavior, not error states.
  • Multi-leg trips are a different product shape than single-booking travel apps — the data model (legs + transfers + validation) is the core innovation, not just another hotel search box.

What's next for SplitStay

  • Stripe / SplitStay checkout — native payment instead of sandbox-only LiteAPI booking
  • More transport APIs — deeper train/bus integration (Omio, Gopaxo) beyond outbound links
  • Collaborative editing — partner can comment or co-edit, not just view the share link
  • Email notifications — booking confirmations, gap warnings, trip reminders
  • Mobile app — timeline-first PWA or React Native
  • Cost splitting — divide hotel and transfer costs across travel companions
  • Pro tier — unlimited legs, priority support, advanced export (PDF/iCal)
  • Ai Agent — Agentic capability where users can just talk to the chat agent about their trip and agent recommends hotels/flights/buses/trains. Also Agent can plan everything and do real bookings when given the permission.

Built With

Share this project:

Updates