Skip to main content
2026

Group travel planner

Next.js
Supabase
PostgreSQL
Row Level Security
TanStack Query
Zod
Tailwind CSS
TypeScript

Description

A planner for a trip taken by several people: a timeline that crosses time zones, expenses split between participants in two currencies, and invites that carry the role.

Features

  • Timeline of flights, lodging and activities, each with the local label of its own time zone
  • Expenses split between participants in BRL and EUR, showing what each person still owes
  • Participants without an account, so a group can start planning before everyone signs up
  • Invites by link that already carry the role: owner, editor or viewer
  • Row Level Security per trip: a participant only reads the trips they belong to

Challenges

  • Splitting an expense when part of the group has no account yet, and moving those records over when the person finally signs up
  • Keeping the timeline readable when the trip crosses time zones, without storing local time
  • Putting the access rules in the database instead of only in the interface

Learnings

  • That a role check belongs in a database function, so every query inherits it
  • That a placeholder participant is worth the extra rules it costs
  • How to seed a demo account so a visitor sees a working product on the first screen