Web Development · UI/UX · Full-Stack

TripShare —
Plan, Share & Discover Trips

A collaborative travel itinerary web app built with Next.js, React, and Supabase — featuring social sharing, real-time updates, and an AI travel assistant powered by OpenAI.

Next.js React Supabase OpenAI shadcn/ui Figma
Scroll to explore
TripShare — collaborative travel itinerary web app shown on a laptop

Type

Group Project

COMP 426 · Modern Web Programming

Team

Sanjana Nukala
Celine Keles
Samhi Pudipeddi
Arya Shankardas

Role

Full-Stack & UI/UX

Design · Frontend · Backend

Stack

Next.js · Supabase

OpenAI · shadcn/ui · Figma

01 / Overview

A Social Layer
for Travel Planning

TripShare combines an itinerary builder with a social discovery feed — plan a trip, browse what other travelers have built, and get AI-assisted ideas along the way, all in one app.

Our goal was simple: let users discover and build high-quality itineraries quickly, with search, saves, likes, and AI recommendations that make planning easier and more personal.

View Prototype & Code ↓

The Idea

Travel planning is scattered across notes apps, spreadsheets, and group chats. TripShare puts the plan, the community, and an AI assistant in one place.

The Approach

Design first in Figma with shadcn/ui, then build a real backend on Next.js and Supabase — not a prototype.

App Preview — Itinerary Discovery Feed

TripShare
TripShare itinerary discovery feed with recent trips and the AI travel assistant panel

02 / Key Features

Everything a Traveler
Actually Needs

Six features covering the full loop — from building an itinerary to discovering and getting AI-powered trip ideas.

🔐

User Authentication & Profiles

Sign-up and login via Supabase Auth, with itineraries, likes, and saves all tied to a user's account.

TripShare login screen with email and password fields
🗺️

Itinerary Creation System

A step-by-step form for adding cities, descriptions, locations, and photos to a trip plan.

Create Itinerary form with title, city, trip length, description, cover image upload, and stop fields
🌐

Content Discovery & Interaction

Browse, like, save, and search community itineraries, with dedicated pages for saved and liked trips.

New York itinerary detail page with like count, save button, and trip stops
🤖

AI Travel Assistant

An OpenAI-powered chat panel for destination ideas and planning guidance, built right into the app.

TripShare AI Travel Assistant panel with suggested prompts and a welcome message
🎨

Theme Customization

Light, dark, and system theme modes for accessibility and personal preference.

Theme dropdown menu with Light, Dark, and System options

Real-Time Updates

Supabase real-time subscriptions keep likes, saves, and new posts updating live across the feed.

03 / Tech Stack

Choosing Tools
That Do the Work

Each tool was chosen to move fast without cutting corners on backend functionality or UI polish.

Next.js

App router, server-side rendering, and API routes — the bridge between the React frontend and Supabase backend.

React

Component-based UI, paired with shadcn/ui for a consistent design system on Tailwind.

🟢

Supabase

Postgres database, authentication, and real-time subscriptions in one backend service.

🤖

OpenAI API

Powers the in-app travel assistant, streaming responses through a server-side API route.

🧩

shadcn/ui

Accessible, pre-built components that sped up UI work without giving up control over styling.

Figma

Every screen, both themes, and key component states designed before a line of code was written.

"Supabase made the backend genuinely simple — auth, database, and real-time updates in one service. It let us focus on product decisions instead of infrastructure."

04 / Process

How We Built
TripShare

1

Design First in Figma

We designed every screen, both themes, and the key component states in Figma before writing code — cheaper to change a layout decision there than in a refactor.

2

Data Model First

We mapped the Supabase schema — users, itineraries, cities, locations, likes, saves — before building UI, so the data model drove the components instead of the other way around.

3

Building the Itinerary Creator

The multi-step form for adding cities, descriptions, locations, and photos was the most complex UI piece. shadcn/ui handled the components so we could focus on state management and validation.

4

Integrating the OpenAI Assistant

We routed OpenAI calls through a Next.js API route so the key stays server-side, then streamed responses token-by-token for a live feel.

5

Fixing Our Git Workflow

Early on we all pushed straight to main. A few times someone forgot to pull before starting work, or pushed over changes someone else had just made — overwriting finished work and costing us time redoing it. We switched to feature branches with pull requests and code review, which fixed it.

05 / Reflection

What We Took
Away

  • Feature branches and pull requests beat pushing straight to main — we learned this after losing finished work to overwritten commits.
  • Accessibility and SEO are worth auditing early. Our first Lighthouse report came in at 64% for both; a pass adding metadata and labels across every page got us above 90%.
  • Getting the data model right first paid off — the Supabase schema shaped the UI, not the other way around.
  • API keys belong server-side — routing OpenAI through a Next.js API route kept ours off the client.

Hardest Part

Coordinating Git across four people. A few merge conflicts overwrote finished work before we adopted branches and pull requests.

Most Satisfying

Watching our Lighthouse score climb from 64% to 90%+ after a full pass on accessibility and metadata.

What's Next

A more capable AI assistant that can take an itinerary you upload and edit or regenerate it to match your preferences, plus a way to organize saved trips into folders from the navbar.