Custom Wedding Invitations

A wedding invitation that speaks ten languages

AI wish enhancement, two-stage artwork generation, live streaming and a shared guest gallery — all controlled by the couple from a no-code admin panel.

Client
Safalya & Praneeth
Industry
Personal & Events
Digital wedding invitation showing a countdown, event timeline and multilingual wishbook

What was the problem?

A wedding spanning several events and a guest list across multiple languages and locations, where a conventional invitation — paper or a static image — cannot carry a timeline, handle a live stream, or let guests who could not travel take part at all.

What made it hard

Commercially

  • Replacing an invitation, an RSVP, a photo album, a live broadcast and a guestbook with a single link

Technically

  • Detecting a guest's intended language reliably when it may be stated in text, chosen in a dropdown, or implied only by the script they typed in
  • Preventing an AI model from echoing instructions back, drifting into the wrong script, or exceeding length
  • Producing genuinely good generated artwork from a guest's one-line idea
  • Identifying returning guests without asking anyone to create an account
  • Letting the couple change page structure without a code deployment

Operationally

  • The couple needed to moderate wishes and photographs before they appeared publicly
  • Guest uploads had to work on venue Wi-Fi and patchy mobile networks

Security

  • Admin credentials protecting a private family event
  • Guest media that must not be publicly writable

What we built

A fully custom digital wedding invitation: a countdown to the day, an AI Wishbook turning guest wishes into personalised calligraphy and artwork, multilingual support across English, Hindi, Telugu, Marathi, Tamil, Kannada, Gujarati and Bengali, a full event timeline covering Mehendi, Bridal Day, Groom's Day, Wedding and Reception, live streaming, a guest-shared media gallery and a shareable invitation with WhatsApp integration.

What it does

  • AI wish enhancement across ten languages with five tones

  • Three-tier language detection with directive stripping

  • Script, echo and length validation on every AI response

  • Fifty hand-written fallback wishes

  • Two-stage AI artwork generation in three styles

  • Cost-controlled Daily Love Note generator

  • No-login guest photo and video upload

  • Device-fingerprint guest identity with upload attribution

  • Event-sorted media gallery with likes and full-screen viewing

  • Integrated live streaming

  • Eleven Firestore-controlled page sections with instant visibility toggles

  • Admin moderation with CSV and JSON export

  • Shareable invitation image, calendar integration and email reminders

Engineering decisions

Choices that could have gone another way, and what each one bought.

  1. Language resolved three ways before a single token is generated

    The system reads a written directive in the guest's text first — including one written in the target script itself — then an explicit dropdown selection, then falls back to Unicode block detection of whatever script the guest typed in. The directive is then stripped from the text so the model cannot echo the instruction back.

    Why it matters. An elder who types a blessing in Telugu script has already told the system everything it needs to know. Asking them to also find a dropdown is the kind of friction that stops people using the thing at all.

  2. The AI's output is checked before anyone sees it

    Each of five tones maps to its own temperature and style hint — 0.9 for funny, 0.55 for blessing. Every response is then validated for correct script, tested for echo against the guest's own input, capped at fifty words and has the couple's names injected. Anything that fails falls through to fifty hand-written wishes covering ten languages and five tones.

    Why it matters. Generation is the easy half. The guest never sees a wrong-script response, a parroted prompt or an error message, because every failure mode has somewhere to land.

  3. A language model used as a prompt engineer

    Artwork generation runs in two stages: Gemini 2.5 Pro takes the guest's rough idea plus a style guide — Cartoon, Ghibli or Royal — and writes a detailed South Indian wedding image brief, which Imagen 4.0 then renders, behind a fallback model, two retries and thirty-second timeouts.

    Why it matters. A one-line guest prompt sent straight to an image model produces generic output. Letting a language model do the describing first is what makes the results worth showing.

  4. Knowing who uploaded what, without anyone signing up

    A device fingerprint built from host, user agent and platform is persisted to local storage and a one-year cookie, then synced to a Firestore guest profile holding a name and phone number. Each upload upserts that record and increments the guest's upload count.

    Why it matters. Asking a wedding guest to create an account is how you get no photographs. This gives the couple full attribution while asking the guest for nothing.

  5. A CMS the couple could actually use

    Eleven page sections live in Firestore, fetched on load and gated behind a visibility check on the page. The couple toggles a section in the admin panel and it disappears from the live site instantly — and if the backend is unreachable, sensible defaults keep the site rendering.

    Why it matters. The alternative is calling a developer at eleven at night the day before the wedding.

  6. Cost control designed into a feature

    The Daily Love Note calls Gemini on only every third refresh; the rest of the time it draws from thirty-nine curated quotes, each attributed to a real named family member.

    Why it matters. It caps API spend and guarantees a quality floor in the same decision — the fallback content is arguably better than the generated content.

  7. No single point of failure, because there is only one wedding day

    Every AI route has a hand-written fallback, section and settings configuration fall back to defaults, analytics is fire-and-forget, media deletion is idempotent, and every external call carries a timeout.

    Why it matters. A wedding website gets exactly one chance to work. If an external service fails mid-ceremony, the site keeps running.

Technical detail

Collapsed by default. Open whichever part you are evaluating.

Frontend
  • Next.js 14.2 App Router
  • React 18
  • TypeScript
  • Tailwind CSS v4
  • Radix UI
  • Approximately 9,700 lines across 52 files
Backend
  • Node.js with Express 5
  • Firebase Admin SDK
  • Approximately 1,800 lines across 8 route modules
Database
  • Cloud Firestore — 8 collections: wishes, media, guests, sections, settings, reminders, events, login
Storage
  • Firebase Cloud Storage with signed URLs
Authentication
  • Client-side SHA-256 password hashing before transmission
  • HMAC-SHA256 signed session token, JWT-shaped, 12-hour lifetime
  • Token re-verified on every page load for session persistence
Authorization
  • Single administrative role held by the couple
Background processing
  • Fire-and-forget analytics
  • Email reminder dispatch
Caching
  • Section configuration fetched on load with default fallback
Messaging
  • Email reminders ahead of the wedding date
Deployment
  • Vercel (frontend)
Monitoring
  • Engagement counters for wishes, likes, photos and videos

Frontend
  • Next.js 14.2
  • React 18
  • TypeScript
  • Tailwind CSS v4
  • Radix UI
Backend
  • Node.js
  • Express 5
  • Firebase Admin SDK
Database
  • Cloud Firestore
Cloud
  • Vercel
  • Firebase Cloud Storage
Integrations
  • Google Gemini 2.0 Flash
  • Google Gemini 2.5 Pro
  • Google Imagen 4.0
  • Google Calendar
  • Apple Calendar (ICS)
  • WhatsApp sharing

Authentication
  • Passwords hashed with SHA-256 in the browser so the plaintext never leaves the device
  • Backend comparison against a hash held in Firestore
  • HMAC-SHA256 signed session token with a 12-hour lifetime, re-verified on every page load
Authorization
  • Administrative access limited to the couple
Data protection
  • Guest media served through signed storage URLs
  • Wishes and media held for moderation before public display
Abuse prevention
  • Admin moderation queue for every guest submission
  • AI output validated for echo and script before display
Auditability
  • Per-guest upload counts recorded against the guest profile
Privacy
  • Guests identified by device fingerprint and a name and phone number rather than by account credentials — no passwords are collected from guests

Mechanisms

  • A hand-written fallback behind every AI path
  • Default configuration behind every settings and section fetch
  • Timeouts on every external call
  • Exponential backoff retries on rate-limit and server errors
  • Fire-and-forget analytics that cannot block the page
  • Idempotent media deletion

Failure scenarios handled

  • AI provider unavailable or rate-limited
  • AI returning the wrong script or echoing the prompt
  • Image model failure
  • Backend unreachable when loading section configuration
  • Patchy venue Wi-Fi during upload

Idempotency. Media deletion is idempotent, and guest records upsert rather than duplicate on repeat uploads.

Recovery. Every external dependency degrades to a hand-written or default fallback rather than surfacing an error to a guest.

Before and after

Before

  • A printed card carrying one event and no way to respond
  • Relatives abroad who would miss the ceremony entirely
  • Elders unable to write a blessing in their own language
  • Guest photographs scattered across a dozen WhatsApp groups
  • A couple unable to change their own site without a developer

After

  • One link covering invitation, RSVP, live stream, gallery and guestbook
  • A live stream for guests who could not travel
  • Blessings written and refined in ten languages
  • Every guest photograph in one place, attributed to whoever uploaded it
  • A no-code admin panel the couple ran themselves

The build, by the numbers

What was built, at what scale. These describe the system's size, not its business results.

languages supported
10languages supportedWish enhancement across ten Indian languages with script detection
hand-written fallback wishes
50hand-written fallback wishesTen languages across five tones, so a guest never sees an AI error
runtime-configurable page sections
11runtime-configurable page sectionsToggled by the couple with no code change or redeploy
AI models in the pipeline
3AI models in the pipelineGemini 2.0 Flash, Gemini 2.5 Pro and Imagen 4.0, plus a fallback image model

What changed as a result?

A modern, tech-forward wedding experience that goes far beyond a traditional invite: guests participate, share moments and stay connected through one custom-branded digital touchpoint.

  • Eight languages supported
  • Live streaming for guests unable to travel
  • AI Wishbook turning guest messages into personalised artwork
  • Guest-shared media gallery, so the record built itself

See it running

safipraneeth.vercel.app(opens in a new tab)

Need something like this built?

Tell us what is slowing the business down and we will tell you whether software is the right fix. If it is not, we will say so.

Ask a Quick Question on WhatsApp

Free 30 minutes · no obligation

WhatsAppCall