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

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.
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.
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.
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.
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.
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.
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.
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.
Free 30 minutes · no obligation
Related work
- Education / Internal SaaS
Little Lumos School Management Portal
Custom-built school management SaaS that automates end-to-end school operations
- AI Workflow Platform
Little Lumos — AI Monthly Progress Reports
A preschool was hand-writing 70+ monthly progress reports, costing 3–4 working days every month. Softivum built the full workflow: teachers speak, AI drafts, admins approve, and branded letters reach both parents with per-recipient delivery tracking.
- Marketplace Platform
Helpora — Hyperlocal Neighbour-Help Marketplace
A marketplace where neighbours pay neighbours for everyday help. Softivum built the consumer app, the marketplace engine, the operations console and the brand site — verifying identity against government records, holding every payment in escrow until the job is done, and tracking helpers live on a map.