EP
Own work
Personal project, from idea to release

WanderlotGroup trips

Trip planning for a group of friends. The organiser researches destinations with Claude and approves the few worth voting on; everyone else signs in with a name and a PIN, ranks their top three, and once it is decided the whole trip is on one page.

ClientPersonal project
Stack
React 19TypeScriptTailwind 4GSAPHonoCloudflare WorkersD1zodClaude APIPlaywrightVitest

What the problem was

My friends and I needed a way to decide where to go on holiday: find a few destinations, see what the flights and an Airbnb would cost for each, and vote on one. That was the first version; a vote on dates, who has their days off, and what to see and do in each place came after. It is two apps: a panel for whoever organises, running on their own computer, where destinations are researched and decided, and a site for everyone else, mostly opened on a phone. One deployment per group on Cloudflare's free tier, in Spanish or English, and nobody has to make an account. I took it from nothing to 1.0: the screens designed in Claude Design, then built with Claude, with me directing the work.

The panel and the site, walked through

What I did

Claude researches, the organiser decides

Claude, or any OpenAI-compatible model, researches each destination: flights, where to stay, what to do, pros and cons. Friends can suggest places for it to look into. The panel brings back twelve options and the group sees only the ones the organiser approves, after rewriting anything Claude wrote that needs it.

Every price says where it came from

A price is marked verified, estimated or written by Claude, and goes stale after 72 hours or when the dates move. To firm one up, the organiser types in a checked price, pastes a screenshot for the model to read, or lets Claude open Google Flights in a visible browser with read-only tools. Airbnb's pages could not be read reliably, so stays are checked by hand from a prefilled link.

Sign-in for friends who will never make an account

Private links came first, until it was clear that forwarding one handed over the account. Now a one-time invite, which a chat app's link preview cannot use up, leads to a name and a four-digit PIN. Ten thousand values is not many, so obvious PINs are refused, lockouts grow from fifteen minutes to a day, and PINs are stored as an HMAC keyed by a server secret.

How it stays fast

  • One codebase on Cloudflare Workers with D1 and on plain Node, with the end-to-end suite run against both in CI
  • Photos linked from Unsplash, Pexels and Wikimedia rather than stored, in fixed tiles so nothing moves as they load
  • 303 unit and component tests, and a Playwright round trip from research in the panel to a friend signing in

How it turned out

Released as 1.0 in October 2026, open source under MIT and built so any group can host its own. The group's first trip ran on it: Budapest won the vote, the group went to Prague, and the organiser re-checked every price by hand. What that trip exposed became the work that led to 1.0.

github.com/EymanEP/wanderlot

Selected media

The group's site

On desktop
The signed-in home page listing the group's November 2026 trip, its dates, five people, five destinations and the line We're going to Prague
Your trips
Your trips
The trip page: each friend's days-off status for 12 to 17 November above the destination cards, filterable by city, getaway, beach and nature
Days off and destinations
Days off and destinations
Prague at 275 euros a person: a credited photo grid, flight time, the cost of five nights, November weather and the outbound and return flights
One destination
One destination
The closed vote: the reader's ranked three, the scoreboard with Budapest on 10 points and Prague on 9, and how each friend voted
The vote, closed
The vote, closed
The Prague trip page: what mid-November there is like, what each person puts in for flight and stay, and who has their days off confirmed
The trip, decided
The trip, decided
On a phone
Your trips
Your trips
Your trips
Destinations
Destinations
Destinations
One destination
One destination
One destination
The vote
The vote
The vote
The trip
The trip
The trip

The organiser's panel

On desktop
The panel's trip list: November 2026, open, vote closed, five proposals all approved, with buttons to open, set dates, edit, export and delete
Trips
Trips
Two ideas from the group waiting to be researched, Oslo and Brașov, above the generated proposals for Milan, Budapest and Amsterdam with a price per person
Generated proposals
Generated proposals
Approved proposals for Milan and Budapest, each warning that its price was checked for other dates, with when it was checked and a link to Google Flights
Review before publishing
Review before publishing
Four destinations in columns: flight, five nights, total per person, journey time, November weather, and pros and cons written by Claude
Side by side
Side by side
The decided dates, 12 to 17 November, over each friend's days-off status, with a button to remind whoever is missing
Dates and days off
Dates and days off
The closed vote from the organiser's side: Prague chosen though Budapest won, the points table, and options to go back to Budapest or pick another destination
The result
The result
On a phone
Trips
Trips
Trips
Generated proposals
Generated proposals
Generated proposals
Review
Review
Review
Side by side
Side by side
Side by side
Dates
Dates
Dates
The result
The result
The result