Vowbell: a wedding website with RSVPs and a guest list for the couple

Vowbell: a wedding website with RSVPs and a guest list for the couple

00 Markdown

A wedding site with a countdown, RSVPs by invite code with meal choices, CSV guest import, and a live RSVP tracker.

Agent specs

Agent
Claude Code, Opus 5.5 Medium
Time
23 min
Cost
$7.87*

Agents work faster and more accurately on Elements.

* Cost at API rates, September 2026.

Run it yourself

Paste this prompt into your AI agent. You get the finished app on your own machine, ready to change however you like.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app from the elementscode/demo-vowbell scaffold:
cd ~/elements/projects
elements create vowbell -scaffold=elementscode/demo-vowbell
cd vowbell

Start the app.

Need an AI agent?

In AI desktop apps, paste into the Code tab, not the general chat.

How it's built

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.

The code

Build it from scratch

To watch your agent build this app from an empty project, use the prompt we used instead. It takes longer than starting from the finished app above.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app:
cd ~/elements/projects
elements create vowbell
cd vowbell

Start the app, then build this:

Build a wedding website named vowbell.

GUEST
- A beautiful home page: the couple's names, date, a countdown, the story,
  schedule of events, travel and hotel info, and a photo gallery.
- RSVP with a code from the invitation: attending or not for each person in
  the party, meal choice, dietary notes, and a song request.
- A confirmation email.

COUPLE (admin account)
- Edit the site's content and photos.
- Guest list with parties and invite codes; import from CSV.
- RSVP tracker: attending, declined, waiting, meal counts, and a CSV export.

Seed the couple, the site content with photos, and eighty guests in forty
parties, about half responded. Show the admin login on the sign-in page.

The RSVP tracker updates in real time.

The weekly digest

New lessons, demos and posts from elements.dev, in one email a week.

Comments· 0