What it is
Roam is a self-hosted group trip planner. The center of the product is a shared trip workspace: a crew joins one group, builds one itinerary, tracks money and packing, checks maps and weather, and sees activity updates as the plan changes.
The visual direction is intentionally more travel journal than SaaS dashboard: stamp cards, ticket-stub days, map pins, warm editorial typography, and a planning surface that feels like part of the trip instead of a spreadsheet wearing nicer shoes.
Why I built it
Group travel planning usually ends up split across chat, spreadsheets, pinned messages, map links, and payment reminders. The problem is not that any one tool is terrible. The problem is that none of them owns the trip.
Roam is the attempt to make one workspace feel good enough that the group actually uses it.
What it does now
- Groups and invites — create a planning crew and invite friends with redeemable codes.
- Trip workspace — trips carry city, country, dates, itinerary days, items, votes, expenses, packing, weather, currency, and activity.
- Itinerary builder — add days and places, geocode locations, save map coordinates, reorder cards, lock plans, add notes, and vote.
- Map, weather, and FX panels — map pins, forecast helpers, and currency conversion sit inside the same workspace.
- Live activity — changes are persisted and streamed so another session can see the trip evolve.
- Demo account — local development seeds a reviewable sample trip so the app can be tested without setup theater.
What I learned
- Travel planning wants texture, but not clutter. The editorial skin helps Roam feel distinct, yet the itinerary and expense controls still have to behave like real product UI.
- A map is part of the workflow, not decoration. Saved coordinates, geocoding states, and map pins need to line up with itinerary cards or the feature becomes a postcard.
- Light paper can be too bright. The next visual direction keeps the travel-journal warmth but moves toward a darker, calmer reading surface.
Status & next steps
Roam shipped. v0.5 "Decide Together" is live at roamapp.jhinx.dev — group-level decisions, candidates as draft trips, availability, votes and ranks, free-only flight links, and a winner that graduates into the real trip. The dark editorial visual direction landed with it.
The static preview at roam.jhinx.dev is the visual preview; roamapp.jhinx.dev is the running app. Remaining work is iteration: day-level reorder, richer member-setting refresh, and a longer look at the production auth story.
