Wedding Website
Guests type their name and find their seat.
Private client · 2026
A website for a private wedding. A guest arrives, types their name, and sees exactly which table and seat is theirs on a plan of the room.
Try it
Interactive demoThe couple had a guest list that kept changing right up to the week of the wedding, and no interest in learning a new tool to manage it. Whatever I built had to let them edit the list the way they already did — in a spreadsheet — and have the website simply follow along. It also had to work on a phone, at a venue, on a patchy connection, for guests who had never seen the site before.
The couple keep their guest list in a Google Sheet, exactly as they already were. The website reads from that sheet, so an edit shows up on the site without anyone touching the website itself. Guests get one box to type their name into and an instant answer.
I also made sure the site keeps working if Google is unavailable: it holds its own copy of the latest guest list and serves that instead of showing an error. On the day, a website that fails is worse than useless.
Under the hoodFor the technical reader
Next.js on Cloudflare Workers, deployed with wrangler. The guest list is a
published Google Sheet read as CSV at build and on a schedule, with a committed
snapshot.json as the fallback path when the fetch fails — the site degrades to
stale-but-correct rather than erroring. Name matching is normalised for casing,
whitespace and Thai/Latin spellings of the same guest. Seat positions are
authored once through a dev-only calibration tool that maps table coordinates to
fractions of the floor-plan image, so the map survives a change of venue photo.
Access is gated by a code in the URL so the guest list is not publicly
enumerable, and the test suite covers the CSV parsing, the name matching and the
snapshot fallback.
The demo above is a rebuild with invented guests. The real site holds actual names and addresses, so it is never embedded here.