A Human Business Platform
Four production surfaces for one business, solo, in three weeks
Cloudflare Workers · D1 · Workers KV · Durable Objects · Vanilla JS
- 355commits, 100% mine
- 40gated check suites
- 28migrations, 2 databases
- 3 wksto four live surfaces

The problem
A Human Business sells a book, a seminar and a paid academy to three different audiences. One identity had to work across all of them. The marketing side ran on GoHighLevel and was not moving.
Meanwhile the team was reviewing 39 course videos in email threads, which is exactly as good as it sounds. Whatever I built had to hold all of that without a framework I would then be maintaining, and it had to be safe to deploy while people were mid-sentence inside it.
What I built
- The brand system. Story, logo, colour, type, illustration, voice and UI as one browsable document with a dark mode for checking contrast. The visual and verbal system every other surface is built from, written and built end to end.
- A public site carrying the book, the seminar, the assessment, CultureCon, and a free three-lesson intro course with reflections and knowledge checks — try the course.
- A team platform in daily use. Rooms with per-room grants, threaded comments with resolve and reopen, read cursors and unread state, direct messages, attachments, voice notes, and live presence backed by a Durable Object.
- Timestamped video review. Pause anywhere in one of 39 course videos and the note carries that moment, which is what the editor actually works from.
- A site-copy workflow that blocks deploys. Copy is proposed, reviewed and approved inside the platform before the public site is allowed to ship it.
- An academy with magic-link sign-in, lesson progress, journals, knowledge checks and a certification gate.
- A CRM boundary. A GoHighLevel client, cache, tag layer, outbox, webhook inbox and reconciliation run, so the CRM stays where it is and the platform never depends on it being up.
- A deletion sweep with an audit page, so a request to be removed is something the system does rather than something someone remembers to do.
Architecture
- Runtime
- Cloudflare Workers in vanilla JavaScript. No framework, no build step. One dependency, wrangler, pinned to an exact version.
- Data
- Two D1 databases, 30+ tables, 28 forward migrations. Workers KV for sessions and cache. A Durable Object for live presence.
- Auth and access
- Magic-link email sign-in with ULID identities and KV sessions, in separate namespaces for team and learner. Shared room codes for team rooms that do not need an identity.
- Scale
- 28,829 lines in the shared layer; 3,840 in the team Worker alone.
- Delivery
- Four Workers on four hostnames, each with its own config, bindings and deploy command, plus staging twins.
Engineering discipline
The checks that make fast work safe. Every one of these is in the repo.
- 40 automated check suites, run as a gate.
team/qa/ship.shopens with the line One way in and stops on the first red suite. Nothing reaches the team except through it. - Academy production will not deploy without
APPROVED_BY. That check lives in the deploy path, not in a wiki nobody reads. - Staging runs on synthetic data by standing rule. The guard requires two independent marks before it will call a record fake, and refuses rather than passing when it cannot reach the database.
- The staging config carries an empty routes list on purpose. Without it, a staging deploy would take the paid product's hostname away from production and point it at the synthetic copy. The reason is written above the line.
- wrangler is pinned exactly, with the incident that taught it recorded in package.json: a gate whose result depends on what somebody published upstream this morning is not a gate.
Built with AI, gated by tests
Three weeks from first commit to four live surfaces is not a typing speed. It is a specification-and-review speed.
The platform is governed by a written constitution: ten numbered laws, a domain model, and sixteen sections of system design, all of it written before and alongside the code. That document is what the AI was held to, and what I reviewed against.
Everything above about gates exists because the method demands it. Fast generation with no gate is just fast damage.
Visuals



What shipped
- Live across the public site, the team platform and the academy.
- 355 commits between 28 July and 17 August 2026, every one of them mine.
- The team platform is in daily use by the people it was built for, which is the only acceptance test that matters.
Built for A Human Business (Glenn Bostock) in partnership with SnapCab. Screens are rendered from the project's own pages; presenter names appear as roles and internal figures are left out.