Skip to main content
NMHx.
Work
Services
About
Process
FAQ
Contact
mythiep
Hadi
crossweave
Open GitHub
Chuyển sang Tiếng Việt
Toggle light/dark theme

↑↓ select · Enter open · Esc close

All work

Online invitations · Self-service SaaS

mythiep

A self-service product for online invitations: pick a template, pay once, edit it in the browser and publish a link guests can RSVP from. No yearly fee.

Platform
Web
Status
Live in production
Stack
Next.js 16 · React 19 · TypeScript · Prisma 7 · PostgreSQL · Auth.js · Puck · SePay · Cloudflare R2 · Redis · Sentry
The mythiep template catalog, showing invitation templates grouped by type

The problem

Hosts want an invitation they can finish themselves in a day: choose a design, make it theirs, share a link and collect replies — without hiring a designer and without paying a yearly fee to keep it online.

Technical choices

  1. 01

    Puck as the canvas editor, loaded only in the editor; public invitations render with Puck's <Render>

    Why
    Puck lays out in flow by default while invitation designs use absolute positions, so a time-boxed spike on a minimal canvas ran before the schema was written. It showed that absolute positions work when react-moveable is attached in the editor only, and the editor is never shipped to guests.
  2. 02

    SePay payments: a signed form POST (HMAC-SHA256) and a payment notification verified by a secret header, one payment per invitation, Basic/Pro pricing per invitation type

  3. 03

    Invitation photos stored on Cloudflare R2 as webp variants (768/1200/1600 px) and served with srcset instead of next/image

  4. 04

    Next.js 16 and Prisma 7 on PostgreSQL: the app and Redis on a VPS, the database on Supabase used as plain Postgres (no Supabase Auth, Storage or Realtime)

  5. 05

    Cloudflare Turnstile on the RSVP and wish forms, so a public invitation can take replies without accounts or spam

Architecture

  1. Pick a template
  2. Pay once (SePay VietQR)
  3. Edit in the browser
  4. Publish at /thiep/[slug]
  5. Guests reply (RSVP)

Supporting services

Data
Prisma 7 on PostgreSQL (Supabase)
Auth
Auth.js
Payments
SePay (VietQR)
Images
Cloudflare R2
Cache and queue
Redis
Monitoring
Sentry

What shipped

  • 51 templates across six invitation types: wedding, birthday, baby's first-year, housewarming, event and graduation.
  • Basic edits through a form; Pro opens the full canvas editor.
  • One-time purchase per invitation with SePay VietQR checkout.
  • RSVP, guestbook and map blocks on the published invitation.
  • An admin area for types, templates, pricing, orders and invoices.
  • Live at mythiep.com.

More facts

invitation templates
51
DB migrations
75
commits
1,700+
test files
900+