Back to Projects
LAUNCHED

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 6React 19TypeScriptSupabaseSupabase AuthSupabase StorageVercel

// problem

Business Problem

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

Constraints

  • 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

Architecture

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

Scalability Strategy

  • In-browser site editor (ClientAdmin panel) lets the couple update all content live — no developer needed after handoff
  • localStorage content persistence with deepMerge for zero-config content fallback
  • Rate-limited RSVP endpoint to handle bulk traffic without Supabase overload
  • Supabase Realtime and Storage ready for media expansions post-event

Security Decisions

  • Supabase magic-link OTP auth — no passwords stored; guests verified against approved list
  • Row Level Security on all Supabase tables — guest uploads scoped per authenticated user
  • HTML sanitisation with DOMPurify on all admin-editable content fields
  • RSVP endpoint rate limiting with structured error logging via JSON stdout

Target Outcomes

  • Delivered a fully bespoke, brandable wedding site — zero generic platform constraints
  • Couple can edit all copy, colours, and sections live via the admin panel without a developer
  • RSVP management with duplicate prevention and confirmation flow built in
  • Private guest photo portal with Supabase Storage and magic-link authentication