--- title: "Vowbell: a wedding website with RSVPs and a guest list for the couple" author: "@chris" author_url: https://elements.dev/users/chris published: 2026-09-30T21:12:14.692Z url: https://elements.dev/demos/z9pcqj7q/vowbell-a-wedding-website-with-rsvps-and-a-guest-list-for kind: post format: article --- # Vowbell: a wedding website with RSVPs and a guest list for the couple by [@chris](https://elements.dev/users/chris) ยท 2026-09-30 ## Description A wedding site with a countdown, RSVPs by invite code with meal choices, CSV guest import, and a live RSVP tracker. Vowbell needed a public wedding site, RSVPs by invite code with a confirmation email, a guest list the couple can import from a spreadsheet, and a tracker that fills in as replies arrive. Each of those is a part of Elements, so the agent spent its 23 minutes on the wedding itself. **What Elements gave the app** - **RSVPs as function calls.** The RSVP page finds a party by its invite code and saves every guest's answer and meal choice in one transaction through an `@rpc` written right in the page's template, then emails a confirmation. - **A live tracker.** Every RSVP and guest list edit notifies a channel, and the couple's tracker listens on it, so a reply shows up in the counts while they watch. The replies export as CSV. - **Guest import.** The guests page sends a CSV file to an rpc that reads the rows into parties and gives each one a six-character invite code from an alphabet chosen to read cleanly off paper. - **Site editing and photos.** The couple edits the story, events, hotels and gallery through rpcs. Photo uploads arrive as `File` values and are served under their content hash, and the seed photos and display font ship as assets. - **Data from SQL files.** Two migrations define the wedding and seed the couple, their story and gallery, events, hotels, and 40 parties with 80 guests, about half of whom have replied. - **Sessions.** Every admin rpc and the CSV export check that the signed-in user is one of the couple. **What the project server gave the agent** The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building. **What shipped** The app type-checks with zero errors and all 18 tests pass. Every page works on desktop and phone, and a guest's RSVP shows up on the couple's tracker as it arrives.