Skip to content
Building in public3 min read

Building in Public #4: Publish

By Peter Coppinger

Building in Public #4: Publish

On Tuesday I published the first Vorx app to the open internet. A real URL on vorx.live, served properly, built by prompting. I named the test site after my daughters, so the first thing Vorx ever published has their names on it. It is still up, and it is the first public demo: vorxdemo.com.

That one goes in the memory box.

Two things about that site are worth writing down. It is the first project that published perfectly on the first attempt. No bugs, no hiccups, it just worked, which anybody who has shipped software will tell you is a small miracle.

The other one caught me completely off guard. When I uploaded the photos to replace the placeholder images, the builder did not just swap them in. It looked at each picture, the beach, the cave, the festival, and wrote the little handwritten captions itself. I never asked it to. It just did.

That moment when you realise the tool you are building is starting to think a step ahead of you? That is the good stuff. That is why we build things.

I wrote that on the site itself at one in the morning, and I stand by it at a more civilised hour.

Naturally, the road there was paved with package-manager hell. The publish pipeline builds the user's app in a clean cloud environment, and modern JS tooling has opinions about clean environments: the version manager wanting interactive confirmation in a non-interactive container, cached stores in unwritable directories, install hooks refused by default, the lot. There's a stretch of a dozen commits that is essentially me negotiating with a package manager, and losing, and then winning. If you've lived it, you know.

Vorx becomes a business

But publish was only half the week. The other half was Vorx becoming a business:

Billing. Plans, checkout, subscriptions, and a credit system with the works: buckets, expiry, auto-top-up, per-project usage attribution. Fiddly, precise work where every edge case is somebody's money, so honesty in the UI matters more than charm.

Custom domains. Bring your own domain, and we handle certificates and verification, with clear DNS records and per-record feedback when something's wrong. I even added a 'copy an AI prompt' button so you can paste your DNS setup instructions straight into an assistant. Building for how people actually work now.

Plan mode. My favourite ship of the week. Toggle it on and Vorx thinks before it builds: asks clarifying questions, proposes a plan with scope and a theme picker, and only builds when you approve. Watching it ask a genuinely good question about a vague prompt was one of those quiet wow moments.

Plus GitHub two-way sync, and the start of transactional email for generated apps.

Good tired

Reading that back, no wonder I'm tired. Good tired.

The product has a front door, a cash register, and manners now.

Just shipped

  • Feature: sharing your build now earns credits: post it on X or LinkedIn, submit the link, get 15 credits.
  • Bug fix: the language picker now actually saves your choice instead of reverting on the next page load.
  • Feature: fleet coordination now works from anywhere. A hosted endpoint, not my home Wi-Fi.
  • Feature: Mission Control is served online, locked to the company's own accounts.
  • Feature: generated apps can now be installed like native apps, icon and all.
  • Feature: a performance gate flags exactly which change slowed a generated app down.
  • Feature: generated apps can connect to Google Sheets: append rows, read rows.
  • Feature: generated apps can schedule real recurring jobs, not fake ones.
  • Feature: owners get told immediately if their published app's database ever disappears.
  • Feature: Apple login for generated apps.
  • Bug fix: edits interrupted by a deploy now resume instead of silently vanishing.
  • Bug fix: the cookie consent banner was never actually visible on production, so nobody was ever asked.
  • Bug fix: generated apps were asking their database for tables that were never created. It hit 18 live projects.
  • Bug fix: a code slip in generated apps could crash the whole page on load. Caught and fixed.
  • Bug fix: publishing showed a "failed" message while the site was actually live. Fixed.
  • Bug fix: agents quietly working from stale code can no longer ignore the staleness.
  • Bug fix: a fresh browser window said "please log in again" to people who were logged in.
  • Bug fix: demo data stopped booking appointments on days the business is closed.
  • Bug fix: copied credentials could point a new project at the wrong database. Sealed.
  • Bug fix: an overeager cleanup job was deleting healthy backends. Stopped.
  • Feature: sharing your build now earns credits: post it on X or LinkedIn, submit the link, get 15 credits.
  • Bug fix: the language picker now actually saves your choice instead of reverting on the next page load.
  • Feature: fleet coordination now works from anywhere. A hosted endpoint, not my home Wi-Fi.
  • Feature: Mission Control is served online, locked to the company's own accounts.
  • Feature: generated apps can now be installed like native apps, icon and all.
  • Feature: a performance gate flags exactly which change slowed a generated app down.
  • Feature: generated apps can connect to Google Sheets: append rows, read rows.
  • Feature: generated apps can schedule real recurring jobs, not fake ones.
  • Feature: owners get told immediately if their published app's database ever disappears.
  • Feature: Apple login for generated apps.
  • Bug fix: edits interrupted by a deploy now resume instead of silently vanishing.
  • Bug fix: the cookie consent banner was never actually visible on production, so nobody was ever asked.
  • Bug fix: generated apps were asking their database for tables that were never created. It hit 18 live projects.
  • Bug fix: a code slip in generated apps could crash the whole page on load. Caught and fixed.
  • Bug fix: publishing showed a "failed" message while the site was actually live. Fixed.
  • Bug fix: agents quietly working from stale code can no longer ignore the staleness.
  • Bug fix: a fresh browser window said "please log in again" to people who were logged in.
  • Bug fix: demo data stopped booking appointments on days the business is closed.
  • Bug fix: copied credentials could point a new project at the wrong database. Sealed.
  • Bug fix: an overeager cleanup job was deleting healthy backends. Stopped.

Stay updated: one founder, an army of AI agents, building this in public.

Get each new diary entry by email: the wins, the failures, and the one number we're chasing. No spam, unsubscribe any time.