Skip to content

Repository files navigation

Odyssey

Odyssey landing — The plan is part of the adventure

The plan is part of the adventure.

Odyssey is a collaborative travel itinerary planner — a calm, editorial workspace for solo escapes, group trips, and weekends that turn into something more. Build the day-by-day plan, pin the route on a map, invite your crew, track the budget, and keep notes where you’ll actually find them.

Creative direction: boarding pass + printed map — DM Serif Display for display type, DM Sans for body, JetBrains Mono for figures. Soft paper backgrounds, periwinkle accents, and type-colored events (flights coral, hotels gold, meals peach, activities teal). Planning should feel as good as the trip.


What you can do

SurfaceIntent
DashboardAll your trips at a glance — live, upcoming, wrapped
ItineraryDay-by-day timeline, drag-and-drop, inline notes
MapLeaflet pins for itinerary + collections
ScheduleAvailability polls and a best-window heatmap
BudgetExpenses, trip-level weighted split, settle-up suggestions
Explore / CollectionsVibe search near the destination; save maybes
MembersInvite by email; editors plan, viewers follow along
NotesShared trip notes (plain + rich text)

Stack

LayerChoice
FrameworkNext.js 16 App Router
LanguageTypeScript (strict)
AuthClerk
DatabasePostgreSQL on Supabase
ORMPrisma (via src/lib/prisma/db.ts only)
StylingTailwind CSS v4 + design tokens in globals.css
MapLeaflet (dynamic import, ssr: false)
Rich textTiptap
DnDdnd-kit
DeployVercel

Setup

1. Install

git clone <repo>cd odyssey
npm install

2. Environment

Create .env.local with Clerk keys, Supabase URL/keys, and Prisma URLs:

  • DATABASE_URL — Supabase Transaction Pooler (port 6543)
  • DIRECT_URL — Supabase Direct connection (port 5432)
  • NEXT_PUBLIC_APP_URLhttp://localhost:3000 locally

3. Database

This project uses prisma db push (no migrations directory; Supabase free-tier may pause):

npx prisma db push
npx prisma generate

4. Dev server

npm run dev

Open http://localhost:3000. Landing also lives at /welcome.

Checks

npm run lint
npm test
npx tsc --noEmit

Creative guardrails

  • One token system: CSS variables in src/app/globals.css (--peri, --teal, --coral, --paper, --ink, …). No hardcoded hex outside that file.
  • No localStorage / sessionStorage.
  • Forms validate with Zod before server actions; membership via assertTripRole.
  • Keep the editorial, uncluttered UI — progressive disclosure over dense dashboards.

Deploy

Push to GitHub → Vercel. Mirror .env.local as project env vars (use production Clerk keys for a real audience). After schema changes, run npx prisma db push against production when the Supabase project is awake.


Roadmap

See BACKLOG.md for prioritized tickets (including Splitwise-grade expense splits, packing lists, and mobile polish).

About

Odyssey is where the planning feels as good as the trip itself. A collaborative workspace for travelers to build itineraries, coordinate with their crew, map their route, and track their budget! All in one calm, beautiful place. For travelers, dreamers and those who love wanderlust.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages