Most wedding software is split into two camps — ugly project trackers, or pretty invitation sites. Qabl is the dashboard that does both: editorial typography, swappable themes, and live views of spend, RSVPs, vendors, and timeline — all behind a private link, scoped to one couple.
I'm getting married. The first thing I did after the engagement was open a spreadsheet, and the second thing I did was close it. Wedding planning tools come in two flavors — project-tracker apps that look like industrial software, and invitation websites that are beautifully designed but can't track a single dollar.
I wanted a third option: a private dashboard that looks like the wedding it's planning. Editorial. Warm. Quiet. Something I'd actually want to open every morning, not just when something's overdue.
So I built Qabl — a one-couple-per-instance dashboard that sits behind a private link, themed to match the couple's aesthetic, and powerful enough to be the only tool we use until the day of.
A modern wedding often isn't one event — it's a sequence of ceremonies and celebrations spread across days. Whether it's a rehearsal dinner, ceremony, and reception, or a longer multi-day arc with a Nikkah, Mehndi, and Shaadi, each event carries its own guest list, vendor lineup, run-of-show, and budget.
Generic planners model "the wedding" as a single object. That breaks immediately when you have a vendor booked for two of the three events, a guest invited to one of them, and a budget line that needs to split across all three. The tools either over-flatten everything (Notion templates) or over-formalize it (enterprise PM software).
The data model needs to be multi-event by default. The visual language needs to feel like a wedding lookbook, not a Jira board.
Qabl is a single-page React app with eight screens, each scoped to one couple's data file. There's no signup, no team accounts, no permissions matrix — just a private URL that the couple (and whoever they share it with) opens.
The headline craft: every visual decision is exposed as a setting, so each couple's dashboard ends up looking distinctly theirs. Switch the theme and the entire app re-renders — new palette, new serif, new ornaments — without a reload.
data-serif attribute on <html>.The whole app ships as static HTML. React, ReactDOM, and Babel Standalone load from CDN; every screen is a <script type="text/babel"> compiled in the browser on page load. There is no npm install, no bundler, no dev server.
weddings/{couple}.jsx..jsx file and pointing active.jsx at it. The whole UI re-renders for them./ to the dashboard HTML. No server, no database — couple data is the source of truth.The constraint was: any future couple onboarding to this template should be able to open the data file in any text editor, change a name, and see the dashboard update on refresh. That ruled out frameworks. Everything below is reachable from a CDN.
Each weddings/{couple}.jsx file is the seed of a productized template. The end state isn't a multi-tenant SaaS — it's a private repo a wedding planner buys, fills with their client's data, and deploys to a private Vercel link as a deliverable.
That model fits the audience. Couples paying for a planner already trust them with everything; what they want is a beautiful, single-link source of truth they can show family. The planner gets a high-margin add-on; the couple gets a dashboard that looks like the wedding they're planning.