
Who
I kept catching myself watching franchise operators bounce between a POS export, a Steritech PDF, a schedule spreadsheet, and a text thread that somehow became HR.
I wanted the above-store view and the store-level pain in the same repo family: real auth, real email, and an honest note that the custom domain DNS still does not answer from my network. A generic restaurant dashboard template with fake charts would not cut it. Neither would a pitch that says multi-unit without a stores table.
Your ZAXBYS is for multi-unit Zaxby's owners, above-store folks, and GMs who will sit with a CAP form. Operators who treat Clerk + Convex as a product decision. If you run MarTech by day and still care whether a food-safety observation has a written plan, this is for you.
What
I built a franchise management platform as a Next.js app with a marketing shell and a gated dashboard.
Public surface: hero lander, features, pricing, about, testimonials, blog stub, contact, privacy. Clerk sign-in / sign-up. CTAs now point at /signup. That wiring was a March 1 fix, not day-one. Pricing page sells Starter $99/mo, Professional $199/mo, Enterprise Custom, plus add-ons ($25 per extra location, analytics, integrations setup, priority support). FinalCTA still shows a placeholder (555) 123-ZAXBYS. That is not a real phone bank.

Private surface: /dashboard with stores, employees, schedule, audits, reports, settings. Convex schema is the spine: employees (roles from franchise_owner down to team_member, eid like ZAX######, ssnLast4 only), stores, schedules + shifts, caps (food safety / RER with observation, solution, plan), audits (Steritech, health department, internal, RER), salesData, feedback, notifications. Resend routes send confirmation, invite, and notification mail from notify@yourzaxbys.com. Invite copy still names Zaxby's Waynesville, NC. The sibling store product is real.
Stack on disk: Next 16.1.6, React 19, Convex, Clerk, Radix + Tailwind, Sentry (hustle-launch / shipthing), PostHog provider, Bun lockfile, package zaxbys-franchise-management-platform 1.0.0. proxy.ts is the Next 16 rename of middleware. Blacksmith ship.yml pulls Vercel env and Convex deploy keys.

Honesty checks: the lander brags 500+ locations / 25% cost reduction / 99.9% uptime / 4.9★. Those strings live in app/page.tsx. They are marketing copy, not a warehouse receipt. Unauthenticated /dashboard on the Vercel alias returned 404 at pack time, so there is no logged-in screenshot. README still tells you to clone michaelmonetized/www.yourzaxbys.com; the GitHub org is HurleyUS. AUTOPSY.md from February roasted a missing navbar and missing SEO files; HEAD has manifest.ts, sitemap.ts, robots.ts. Treat the autopsy as a scar, not the current build report.
Where
Code: github.com/HurleyUS/www.yourzaxbys.com. Public. Empty description. Empty topics. Zero stars.
Live alias that answered HTTP 200 for this pack: wwwyourzaxbyscom.vercel.app. GitHub homepage field points there. Custom domain www.yourzaxbys.com did not resolve from the pack hosts (NXDOMAIN). Sibling store app: private waynesville.yourzaxbys.com with its own Vercel alias.
Audience: franchise teams that want one login for labor, audits, and CAP follow-ups, and builders who know a SaaS pricing page without a protect() boundary is unfinished.
When
2025-03-07 to 03-09. First init commits under Michael Monetized. Fonts. Style passes. The classic "we gotta push to main to see minor changes yuck" loop. Repo created on GitHub 2025-03-08.
2025-10-02. Another init, reboot marker on the timeline.
2025-10-15. The YOLO pivot. Commit message literally: letting CodeRabbit and GPT5 duke out a refactor into a new project idea. Missing deps. Bun trusts. "Updated everything YOLO." "says ready for prod :shrug:" Accessibility vibing. That afternoon is when the franchise platform stopped being a mood and became a tree.
2025-10-16. Marketing pages land.
2025-12-29. CVE dependency passes.
2026-01-08. PLAN.md: multi-store dashboard, unified reporting, document library, the above-store wishlist.
2026-01-31. Big chore: sync all changes.
2026-02-04. Add complete franchise management dashboard, the product-shaped commit.
2026-02-06 to 02-21. Next 16 proxy.ts rename. Security: SSN off the wire, ssnLast4 in schema, encrypt-at-rest notes in changelog, email domain / EID standardization (#11, #12).
2026-02-28 to 03-09. TypeScript fix PR. Strip thirteen console statements. Wire CTAs to /signup. Bump Next to 16.1.6 for CVEs (#21).
2026-05-14. Blacksmith CI gates standardized across a stack of commits. Lazy-init Resend clients. Skip Convex provider when public env is missing so the marketing shell does not die without a deployment.
2026-08-08. fix: set X-Robots-Tag to index, follow on Vercel. HEAD 705473f. Forty-six commits on the ledger. Pack day is September 8, 2026.
Font fiddling to a versioned franchise ops platform with a live Vercel alias and a custom domain that still needs DNS honesty.
Why
I did not want the store and the above-store to keep living in different tabs forever.
So I put employees, stores, schedules, CAPs, and audits in one Convex schema. I put Clerk in front of the dashboard and Resend on the invite path. I left the marketing stats labeled as marketing. I left the Waynesville invite copy as a breadcrumb to the sibling store app. I set package 1.0.0 knowing "1.0" here means the platform shape shipped, not that every PLAN.md checkbox is green.
sitrep still says WIP and HIGH client priority. ROADMAP still wants owner UAT. That is fine. The repo has receipts in git: schema, auth, email, CI.
Would you fix www.yourzaxbys.com DNS and run a real owner pilot next, or delete the fake 500+ lander stats before anyone quotes them as proof?
