Skip to content
Madhu

Case study · Web apps · 1 min read

Roam

A trip-planning and booking interface: browse destinations, build an itinerary, watch the cost add up and walk through checkout.

Role
Front-end build
Type
Web apps
Stack
Next.js 16, React 19, TypeScript, Tailwind
Roam home page with the headline Plan. Explore. Experience. and a destination search box
Home page.

01

Problem

Roam is a front-end prototype of a travel planning site. Every page and component is built and interactive, and it's live on GitHub Pages.

Planning a trip usually means juggling destination research, a rough itinerary and a running budget across several tabs. Roam explores what it looks like to keep all three in one place before you book.

02

What I did

  • Destination browsing with search and filters for budget, season and activity.
  • A trip planner with an itinerary builder, a cost calculator and an "expert review" panel.
  • A booking flow with review, payment and confirmation screens, plus a user dashboard, auth screens, content pages, and light and dark themes.
The main path through the prototype.

Decisions along the way

Static export
There are no API routes, so the whole site is exported as static HTML and deployed to GitHub Pages by GitHub Actions. That makes it free to host and easy to share.
Off-the-shelf accessible components
UI is built on Radix UI primitives via shadcn/ui, with React Hook Form and Zod for form validation, rather than hand-rolling dialogs and inputs.
Clean up credentials properly
An earlier local copy had live API credentials in an env file the old .gitignore didn't exclude. It was never pushed, and .gitignore now excludes every .env file except the example.

Stack

Framework
Next.js 16 (App Router, static export), React 19, TypeScript
Styling
Tailwind CSS 4, tailwindcss-animate
Components
Radix UI, shadcn/ui
Forms and charts
React Hook Form, Zod, Recharts
Hosting
GitHub Pages via GitHub Actions

03

What I found

  • Building the whole flow as a clickable prototype first shows which back-end pieces actually matter.
  • Static export forces you to be honest about what's real and what's mocked.

More screens

  • Roam trip planner with itinerary and cost calculator
    The trip planner.

04

What I'd do next

  • Connect flight search, payments and accounts to a real back end.
  • Replace the placeholder images and sample data.

05

Limitations

  • Front-end prototype. Flight search, payments and accounts aren't connected to a back end.
  • All data is hard-coded sample data and nothing is saved. Login, signup and payment forms don't submit anywhere.
  • Images are placeholders.

Back to top