← all casesown product
Toiga — a builder for toi invitation sites
Five designs, twelve sections each, a nine-tool editor, drafts without registration, publishing at your own address, RSVP and a wish book. Nuxt 3 + FastAPI + MongoDB.
Nuxt 3 SSRFastAPIMongoDBBeanie ODM
The task
A Kazakh toi invites guests by the hundreds — paper invitations lose to a WhatsApp link. A builder: pick a design, fill in the sections, publish at your own address, collect RSVPs and guest wishes.
The product is my own: design, frontend, backend and database. So the case serves two purposes: engineering and taste.
What was hard
01Section order is data
Sections are stored as an ordered list in data, not as markup. The renderer groups adjacent sections into “runs” with shared wrappers — backgrounds and spacing survive reordering, and a new design never rewrites the ordering logic.
02Dragging inside a scaled preview
The preview shows the page scaled down, while the finger lives in screen coordinates. Every drag converts between frames of reference: pointer coordinates, preview scale, element size. One wrong multiplier — and the element jumps.
03Overlays in fractions of width
Overlay coordinates are stored as fractions of width, not height: a section’s height changes with any text edit, while width stays stable. Overlays don’t drift after content editing.
What was done
- Five designs, twelve sections each
- A nine-tool editor, drafts without registration
- Publishing at your own address, RSVP and a wish book
- Nuxt 3 SSR + FastAPI + MongoDB (Beanie ODM)
The result
The full path works: from choosing a design to a published invitation with RSVP. The case shows both the engineering and a design of my own.