Banky

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 demo

The 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.