CASE STUDY
Capture Cloud
One link per guest. One answer per event.
SECTOR — EVENTS & GUEST MANAGEMENT · STACK — NEXT.JS 15 · REACT 19 · FIRESTORE · SCALE — 232-RECORD REGISTER ACROSS THREE EVENTS · OUR OWN PRODUCT — SOLD TO CLIENTS
§ PROBLEM
A South Asian wedding is not one event with one guest list. It is several, with overlapping guests, two sides of a family keeping their own counts, and households that answer as a group rather than as individuals. Off-the-shelf invitation tools give you one form and one number — and a template every other couple that month also used. What the families need is their own event, their own look, a per-person answer to a per-event question, and a count they can hand to a caterer without arguing about it first.
§ THE BUILD
Capture Cloud is a product, not a one-off. Each event gets its own themed site — its own palette, typography, music and ornament — from a template layer that treats the event as data, so a new client is a configuration rather than a rebuild. Every guest then gets their own link. Opening it names them, and the invitation behind it is addressed to them rather than to “you and guest”. The RSVP is not one button: each named person on the invitation — the guest and every family member listed with them — answers separately, for each event they are invited to. Guests can correct their own details and add family members without anyone in the family being asked to do it for them. Around the invitation sit the things people actually ask for: an add-to-calendar link, the venue on a map, the suggested attire for each side, and a shared photo album per event that guests upload into. Behind it, an admin panel holds the register — searchable by name, email, phone or accompanying guest, filterable by side, event, invitation state and answer — and sends each invitation by email or WhatsApp, one guest at a time, with a sent flag so nobody is invited twice.
§ OUTCOME
The deployment shown here ran three events off one 232-record register: 364 people invited to the Nikkah, 345 to the Baraat, 443 to the Walima, each split by side and by accepted, declined and still pending. Guests answered per event, so the caterer got three counts instead of one guess. The Nikkah album alone finished with 209 photographs from 10 contributors. It ran live across a real wedding weekend and stayed up afterwards, which is the only test that matters. Capture Cloud is our own product and we sell it.
STILLS FROM A LIVE DEPLOYMENT · GUEST DETAILS REDACTED · PICK A STEP TO JUMP TO IT
FEATURE SET
THE PRODUCT
01
The event is data, not a rebuild
A themed site per event comes out of a template layer rather than a fresh project: palette, typography, ornament, music and schedule are configuration. Selling a second wedding does not mean building a second website.
ONE TEMPLATE LAYER · A THEME PER EVENT
THE INVITATION
02
A link that knows the guest
Every invitation carries its own guest id. Opening it greets the person by name over the closed card, and one tap opens it. There is no account, no password and nothing to install — the link is the credential.
ONE LINK PER GUEST RECORD
03
Addressed, not broadcast
The invitation names the guest and both families in its own sentence rather than falling back on “you and guest”. In the deployment shown, one page serves 232 different readings of itself.
ONE TEMPLATE · 232 ADDRESSEES
04
Its own soundtrack, at its own volume
Each event carries its own piece of music, set to a level chosen per event rather than a single global default. It starts quiet and can be paused from the corner.
PER-EVENT AUDIO · PAUSABLE
THE ANSWER
05
One RSVP per person, per event
The unit is not the invitation and not the household. Each named person — the guest and every family member listed with them — answers Will Attend or Can’t Attend separately, for each event they are invited to.
PERSON × EVENT, NOT ONE BUTTON
06
Guests correct their own record
A guest can fix a misspelt name, add a phone number, or add the family members travelling with them, without anyone in the family being asked to do it on their behalf.
THE GUEST EDITS THE GUEST
07
Everything else people ask
Add to calendar, the venue on a map with directions, and the suggested attire for each side down to the colours. The questions that otherwise arrive as messages, answered on the page.
CALENDAR · MAP · ATTIRE PER SIDE
THE REGISTER
08
Counts you can hand to a caterer
Per event, per side, split into accepted, declined and pending, recomputed as answers land. In the deployment shown: 364 invited to the Nikkah, 345 to the Baraat, 443 to the Walima — three numbers, not one estimate.
THREE EVENTS × TWO SIDES × THREE STATES
09
Sent one guest at a time
Each record dispatches by email or by WhatsApp, chosen per guest according to what that guest actually uses, with a sent flag on the row so nobody is invited twice and nobody is missed.
EMAIL OR WHATSAPP · A SENT FLAG PER ROW
10
Findable under pressure
Debounced search across name, email, phone and accompanying guests, with filters for side, event, invitation state and answer. The week before a wedding, finding one row quickly is the whole feature.
SEARCH + FOUR FILTERS
11
Two people editing one list
Both sides of the family add guests, so each row records who added it. The register is shared rather than merged from two spreadsheets afterwards.
EVERY ROW NAMES ITS AUTHOR
AFTERWARDS
12
The album the guests filled
Each event has its own gallery that guests upload into from the invitation they already have open. In the deployment shown, the Nikkah album closed at 209 photographs from 10 contributors, searchable by who posted them.
209 PHOTOGRAPHS · 10 CONTRIBUTORS · NIKKAH ALONE
SURFACES

THE LINK GREETS THE GUEST BY NAME

THE CARD ITSELF

ONE ANSWER PER NAMED PERSON

CALENDAR, VENUE, WHAT TO WEAR

THREE EVENTS, BOTH SIDES, LIVE COUNTS

THE REGISTER — GUEST DETAILS REDACTED
SYSTEM ANATOMY
THE STACK — AS BUILT
- CLIENT
- Next.js 15 · React 19 · Ant Design · Tailwind 4
- TEMPLATES
- One theme per event · the event is data, not a rebuild
- DATA
- Firebase Firestore · one document per guest record
- IDENTITY
- A guest id in the link — no account, no password
- DISPATCH
- EmailJS for email · WhatsApp deep links for the rest
- ADMIN
- Firebase Auth · debounced search over the whole register
- MEDIA
- Guest photo upload per event · one album each
GUEST RECORDS IN ONE REGISTER
EVENTS, ANSWERED SEPARATELY
INVITED TO THE LARGEST EVENT
GUEST PHOTOGRAPHS, 10 CONTRIBUTORS
NEXT SYSTEM
SupaTagsSupaTags