The Wedding Site
Sixteen pages, no framework, and one afternoon it had to survive.
Gustav and I got married on a special day in August 2026, in a castle, and I built the site that ran it. It told guests where to sit, took their photos, ran the games between courses, and put their wishes on a screen in the room. Days later it turned all of that into a thank-you.
The guest hub, with a check-in card under the hero
Shut behind a countdown until six in the morning, then it opened itself. Guests joining from abroad got in two days early, to a pared-down version of the same site.
Search your name, get your table. Rebuilt from the final printed chart, with seat labels measured rather than guessed so two-word names stack instead of stretching. There is a drag-and-drop editor behind it.
Guests posted from any phone with no app and no account. 130 photos in the album. The physical guestbook was transcribed in afterwards, so the handwriting and the typing sit together.
Bingo built from facts guests submitted about each other. 65 of them, 22 cards finished. Photo challenges taken on 30 times.
A phrasebook in Mandarin, Swedish and Singlish. 48 clips, recorded at home, so a Swedish uncle could greet my family in their own language.
A full-screen slideshow for a screen in the room. Wishes and photos appeared as people posted them.
Days later, a story page built from what guests uploaded: the venue, the arrival, ten photos, the figures, six wishes, a thank-you.
A second pass on the recap is lined up for when the photographer's gallery arrives.
No framework, no build step, no package.json. 16 pages, 27 hand-written JS modules, about 7,400 lines. Supabase with row-level security. A service worker precaches the seating chart and the schedule, because a castle with stone walls is not a place to trust signal.
Other couples asked. The product version is parked for now. I may come back and make it something anyone can use.
Our guests did not sign up to appear in my portfolio. Every name, wish and bingo fact below was swapped for an invented one before I took these, so nothing here is anyone’s real message. The photos are ours.







