A premium digital wedding invitation and event management platform. Create beautiful, animated invitations, manage guests, track RSVPs, build seating charts, and publish a multi-page wedding website — all from one admin panel.
- Interactive animated envelope invitation with wax seal
- Multi-layout Welcome page (8 design templates)
- Bridal Entourage builder with per-section typography
- Schedule / Order of Events with timeline
- Gallery with masonry grid
- RSVP wizard with conditional questions, proxy support, and terms
- Seating chart / Find Your Table
- Venue pages with map integration
- Guest list with party groups, tags, bulk import (CSV)
- Email invitation designer with attachments
- Coordinator portal for check-in at the event
- Password-protected public site
- Admin panel secured by email/password login
| Component | Minimum Version |
|---|---|
| Node.js | 18+ |
| npm | 9+ |
| Supabase project | Free tier or higher |
git clone https://github.com/your-username/wedding-platform.git
cd wedding-platformnpm install-
Create a free project at supabase.com.
-
Go to Settings > API in your Supabase dashboard and copy:
Project URLanon publickey
-
Create a
.envfile in the project root:
VITE_SUPABASE_URL=https://your-project-id.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key-hereApply the SQL migrations in supabase/migrations/ to your Supabase project. You can do this via the Supabase SQL Editor in your dashboard:
- Open SQL Editor in your Supabase dashboard.
- Run each
.sqlfile insupabase/migrations/folder in order (sorted by filename). - The migrations will create all required tables, indexes, RLS policies, and storage buckets.
Alternatively, if you have the Supabase CLI configured locally:
npx supabase db pushThe first time you visit the admin panel, you will see a login screen. Click "Create an account" to register your admin user with email and password.
npm run devVisit:
- Public site:
http://localhost:5173 - Admin panel:
http://localhost:5173/#/admin - Coordinator portal:
http://localhost:5173/#/coordinator
npm run buildStatic files are output to dist/. Deploy to any static host (Vercel, Netlify, Cloudflare Pages, etc.).
The platform uses the following Supabase tables:
| Table | Purpose |
|---|---|
site_settings |
Global site configuration, styling, envelope/invitation design |
pages |
Multi-page builder (welcome, story, gallery, schedule, entourage, etc.) |
events |
Wedding events and sub-events with times and venue links |
venues |
Venue locations with photos and Google Maps URLs |
guests |
Guest list with RSVP status, parties, tags, dietary notes |
parties |
Party/table groupings for guests |
rsvp_questions |
Custom RSVP form questions with conditional logic |
guest_event_rsvps |
Per-guest per-event RSVP responses |
gallery_photos |
Photo gallery with captions and ordering |
seating_tables |
Seating chart tables with assigned guests |
invitations |
Invitation tracking (sent status, opened, etc.) |
collaborators |
Team members with role-based access |
entourage_members |
Legacy entourage list (config now stored in pages.config) |
| Bucket | Purpose |
|---|---|
wedding-images |
Hero photos, gallery, venue photos |
monogram |
Wax seal monograms and footer monograms |
documents |
Email attachments and downloadable files |
| Variable | Required | Description |
|---|---|---|
VITE_SUPABASE_URL |
Yes | Your Supabase project URL |
VITE_SUPABASE_ANON_KEY |
Yes | Supabase anonymous/public API key |
The admin panel uses Supabase Auth with email/password. On first visit:
- Navigate to
/#/admin - Click "Create an account"
- Enter your email and a password (min 6 characters)
- You will be logged in immediately
The public wedding site does NOT require authentication. Optionally, you can enable a password gate (set in admin Settings) that requires guests to enter a simple shared password to view the site.
src/
├── admin/ Admin panel components
│ ├── AdminApp.tsx Main admin layout and navigation
│ ├── AdminAuth.tsx Login/register gate
│ ├── sections/ Admin feature panels
│ └── ui.tsx Shared admin UI primitives
├── components/public/ Public-facing components
├── lib/ Utilities (supabase client, router, fonts, etc.)
├── pages/ Page-level components (PublicSite, RsvpPage, etc.)
└── types.ts TypeScript interfaces
MIT