A self-service platform for digital wedding and engagement invitations. Couples design their invitation with a live preview, get a shareable link with a countdown and a map, and guests leave wishes.

Digital Invitations replaces printed cards with one beautiful link that couples send on WhatsApp. Each invitation has an animated opening, the couple's names, a countdown to the big day, an interactive map with directions, and a wishes section where guests leave messages.
It started as hand-built pages for a few couples, and I turned it into a self-service product. Couples fill a form with a live preview and pick an occasion (wedding, katb ketab, engagement, henna…), a template, fonts and a language. They choose their own link, and the invitation goes live once an admin approves it. I built the Next.js front-end, the admin panel and the NestJS + MongoDB API.
Printed invitations are expensive and slow, and plain WhatsApp messages feel cheap. Building a custom page for every couple by hand didn't scale.
A self-service builder with a live preview and ready templates. Every invitation gets its own slug and social preview, an admin approval step keeps quality high, and couples can request edits later with a password.
Design their invitation, preview it live, choose a link and share it with guests.
Open the invitation, follow the countdown, get directions and leave wishes.
Approve or reject new invitations and edit requests, and moderate comments.
A 3-step flow (details & preview → link preview → confirm) where every change shows instantly on the invitation.
Wedding, katb ketab, engagement, henna or custom, with templates for colors and hero layout plus Arabic and English fonts.
A live countdown to the date and time, an embedded map of the venue and one-tap directions.
Guests leave messages on the invitation, and the admin can moderate them.
A custom link per couple with its own Open Graph title, description and image for rich previews.
New invitations and later edits stay pending until an admin approves them. Couples unlock edits with a password.
1 / 5Next.js marketing page and the self-service create / edit flow
Dynamic /[slug] route rendering the chosen template, with per-invitation metadata
NestJS modules: invitations (slug check, create, edit requests, approval), comments, auth
MongoDB for invitations and comments, with uploaded hero and OG images optimized by Sharp
Challenge
The first invitations were separate pages coded for each couple, so every new order meant new code and a new deploy.
Solution
I extracted the shared sections (hero, intro, countdown, map, wishes) into one dynamic invitation driven by data: occasion, template, fonts, language and texts. A single /[slug] route now renders any invitation, so new couples need no code at all.
Challenge
Couples often change the time, venue or photo after sending the link, but unreviewed changes could break an invitation guests are already using.
Solution
Edits are saved as a pending change on the invitation, unlocked with the couple's password. The live version stays untouched until an admin approves the edit and it's merged field by field, or rejects it.
I'd love to help you build something great. Tell me what you're working on.
Let's talk
A full-stack platform for a medical center. Patients can ask questions and get answers from specialist doctors, leave reviews, and contact the clinic.

An online academy for project management (PMP®, CAPM®, PMO, Risk). It has secure video courses, scored exams, "mistake" exams and verifiable certificates, plus a full admin dashboard.

A multi-tenant restaurant system: online ordering on each restaurant's own branded website, a POS inside the dashboard, and built-in restaurant accounting.