Case study
Aaron & Princess — Wedding Site
Custom single-page wedding experience with RSVP management, guest photo uploads, magic-link auth, and an in-browser site editor for the couple.
- Astro 6
- React 19
- TypeScript
- Supabase
- Supabase Auth
- Supabase Storage
- Paystack
- Vercel
The problem
What needed solving
Off-the-shelf wedding platforms are generic, heavily branded, and offer no real customisation. The client needed a bespoke site the couple could edit themselves, with guest RSVP tracking, a private photo upload portal, and livestream support — all in one place.
Constraints
What the build had to respect
- Couple must be able to edit all site copy and content without touching code
- RSVP system needs rate limiting and duplicate prevention to handle bursts
- Guest photo uploads must be private and only accessible after magic-link auth
Architecture
How it fits together
frontend
Astro 6 (prerendered shell) with React 19 island — sections: hero, story, details, RSVP, gallery, registry, livestream, guest upload portal
backend
Astro Node SSR API routes for RSVP upserts, OTP magic-link auth, and media management; Supabase Storage for guest photos
database
Supabase PostgreSQL with RLS — rsvps table and guest_media; Supabase Auth for magic-link guest sessions
deployment
Vercel with Supabase backend; Astro Node standalone adapter