Wedding RSVP System
A private wedding website and guest-management system with personalized RSVP links, short invitation codes, CSV guest import, admin tracking, and a code-gated photo gallery.
The wedding RSVP system is a private full-stack app I built for my own wedding. Instead of sending guests to a generic form, each invitation gets a short personalized code that opens the correct RSVP page and preloads the invited guests.
The admin side manages invitations, guests, plus-one limits, viewed status, RSVP submission status, and bulk imports from a guest-list CSV. The guest-facing flow keeps the experience simple: open the link, confirm attendance for each guest, add allowed plus ones, and submit.
What it does
- Generates short invitation codes for personalized RSVP URLs.
- Imports invitations and guests from CSV into Supabase-backed Postgres tables.
- Tracks whether invitations were viewed and whether RSVPs were submitted.
- Supports guest attendance, dietary restrictions, plus ones, and a thank-you flow.
- Adds a code-gated guest photo upload/gallery flow with rate limiting.
Why it was useful
This was not a portfolio toy problem. It had to work for real guests, handle real invitation data, and give us operational visibility while planning the wedding. The useful parts were the unglamorous ones: import reliability, clear admin filters, short links that were easy to print as QR codes, and safe fallbacks when guests made changes.
Challenges
- Turning a guest-list spreadsheet into normalized invitations and guest rows without losing plus-one limits.
- Designing personalized links that were short enough for QR codes but still mapped reliably to the right invitation.
- Separating public guest access from admin-only management while keeping the RSVP flow low-friction.
What I Learned
- Small internal tools benefit from the same production thinking as public apps when real people depend on them.
- Admin visibility matters as much as the guest form when the workflow includes follow-up and event planning.
- Personalized URLs can remove a lot of friction for non-technical users.