# HMS: I replaced WordPress + Elementor with a live site that is the editor

Source: https://www.michaelchurley.com/blog/hms-hustle-management-system-live-editor  
Published: 2026-08-14  
Author: Michael C. Hurley  
Tags: hms, hustle-management-system, page-builder, convex, clerk, vite-plus, wordpress-alternative, elementor, woocommerce, martech, blocks

![HMS public home mock. ship the site, edit the site](/blog/hms-hustle-management-system-live-editor/screenshots/public-home.png)

## Who

I kept paying the WordPress tax.

The other tax: Elementor for layout, Dynamic.ooo when Elementor ran out of road, WooCommerce when something had to sell, a pile of PHP templates that only one agency intern understood, and a publish button that still felt like deploying a missile.

HMS is for operators who already know that stack and are done leasing their content model from it. Marketing teams that need a revision trail and a split-test variant without forking a theme. Builders who are happier in Convex + Clerk + Vite+ than in another page-builder SaaS seat.

If you have ever opened a live URL, winced, and opened a totally different admin URL to fix one sentence, this is for you.

## What

I shipped **HMS (Hustle Management System)**. The public site is the product. Pages, posts, products, forms, and templates are **block trees** stored as JSON. Signed-in, you append `?edit=1` and edit in place. Visitors keep the same URL. That is the whole thesis.

Stack facts from the lockfile, not the README brochure: **Vite+** (`vp` for dev/build/lint/test), **React 19**, **react-router-dom 7**, **Tailwind 4**, shadcn + Base UI, **Zod 4** schemas driving **Convex** tables through `zodToConvexFields`, **Clerk** for auth, **Resend** as a Convex email action. Package version **0.0.0**. Public repo under michaelmonetized. Six commits. HEAD `6f8fa73`.

![Live editor three-panel mock](/blog/hms-hustle-management-system-live-editor/screenshots/live-editor.png)

The catalog is blunt: Basics, Media, Layout, Proof, Dynamic. Hero, CTA, features, columns, stats, testimonials, FAQ, pricing, logos, collections, menu, search, add-to-cart, cart, forms, document-body. Collections pull pages, posts, products, or media into grid, table, carousel, gallery, or list. and can paint each row with a **loop item** blueprint.

**Blueprints** are one kinded table (ADR 0001): component, form, loop-item, template. Templates carry `appliesTo`. header, footer, 404, search, blog archive/single, shop archive, product single. Tokens like `{{site.name}}`, `{{doc.title}}`, `{{cart.count}}` resolve with modifiers. Visibility groups AND/OR on field, schedule, role, referrer, cookie. Revisions snapshot on content update. Variants sit ready for split tests.

Data layer: local store with seed data for offline/dev; Convex when Clerk + Convex env are real (`isLive`). Cart lines live in localStorage. Commerce key fields exist on site settings and products. treat full checkout as schema-ready, not a finished money path in this window.

![Manage pages workspace mock](/blog/hms-hustle-management-system-live-editor/screenshots/manage-pages.png)

## Where

Code lives at [github.com/michaelmonetized/hms](https://github.com/michaelmonetized/hms). No homepage URL is set on the GitHub repo. this pack does not invent a marketing domain. Local path is `vp install` then `vp dev`. Manage workspace under `/manage/*`. Public surfaces: `/`, `/blog`, `/shop`, `/search`, plus typed entries and slugs.

Audience sits next to every thread still arguing Elementor vs Webflow while the real cost is "two URLs for one sentence." Sibling mail default in the Resend action points at the `uncap.us` from-address. same operator family.

![Shop archive mock](/blog/hms-hustle-management-system-live-editor/screenshots/shop.png)

## When

**2026-08-12, 11:17 ET.** `a62d31d` initialize. Vite+ scaffold, Max fonts, a full shadcn dump, hero PNG. Two hours later `07e6672` configured.

**2026-08-13, 09:40 ET.** `d95789a` needs work. Convex pages, posts, products, media, sites, users. First page-builder. Manage shell routes. The CMS bones.

**That evening, 20:57 ET.** `2404b20` Ship public site, live editor, revisions, and manage workspace. The thesis lands: the site is the editor.

**2026-08-14, 10:34 ET.** `12835c6` new page builder. Catalog depth, finder, blueprints, collections, cart, theme templates. Four minutes later `6f8fa73` documents theme templates, search, cart, and library in the changelog. HEAD. Six commits total. Two per day for three days.

![Blueprint library mock](/blog/hms-hustle-management-system-live-editor/screenshots/library-blueprints.png)

## Why

I did not want another theme marketplace. I wanted the visitor URL to be the edit surface, with block JSON on Convex, revisions you can restore, and variants you can assign. without opening a separate Elementor canvas that misrepresents the front end.

So I compressed the escape into six commits: scaffold, configure, Convex bones, ship public+editor, deepen the builder, write the changelog. Version 0.0.0 on purpose. The README still talks like tanstack-start and zustand are still named there; the lockfile says Vite+ and react-router-dom. I would rather say that out loud than ship a brochure.

What would you put on the first HMS page: the home hero, the shop archive, or the form that finally emails without a PHP plugin?
