Case study Skincare, direct to consumer
Mom's Balm, a storefront that asks for one thing
A brand with no stock got a page in one day, 14,818 bytes, that asks for exactly one thing in two languages.
A skincare brand needed to exist online before it had stock. The page had to take one action, in two languages, and make no claim the brief could not source.
The numbers
One page, two languages, one form, and a launch gate that was measured rather than declared.
- 14,818 bytes served on the day it shipped and the hash of those bytes equal to the hash of the tree, 558970f15c2f, on both sides
- 2 languages, one deployment the same day, both routes English at / and Vietnamese at /vn/, same form, same list
- 0 horizontal overflow measured at 390 px and 1280 px scrollWidth equals innerWidth at 390 px and at 1280 px
- 1 waitlist row, read back one row, written then removed a real post written to KV, listed with the CLI, then deleted, so the list starts empty by proof
The brief
Launch with one page and one ask: leave an address for the waitlist. The buyer reads Vietnamese, the brand is written in English, so the page exists twice with one form and one list.
Nothing else was in scope. No blog, no catalogue, no account.
The constraint
The product did not exist yet, so nothing could be proved by stock, reviews or counts.
The brief carried the ingredients it could source and said plainly where it stopped: no condition named, no relief promised, no price until the owner decided one.
- no fabricated reviews, counts or certifications
- no price on the English page, a dated decision logged on 2 November
- one ask per page, and the form is the only interactive thing
How it was built
A static page and one small Worker. The Worker serves the files and answers one route, POST /api/waitlist, which validates an address or a phone number, writes a single row into KV, and answers with a confirmation.
There is no public read path. The owner reads the list from the command line, so an address never sits behind a page anyone can fetch.
What shipped
A page in two languages, a share card rendered at 1200 by 630 from the site's own type and its drawing of the tin, a 404 for unknown paths, and a 405 for a GET on the waitlist route.
The Vietnamese page carries the tin at 299,000 dong for 50 g. The English page carries no price. That asymmetry was a decision, not an oversight.
What the launch gate proved
Every tick in the launch file is a command or a read-back, not a should. The bytes served hash equal to the tree, the routes answer as declared, the page does not scroll sideways at either width, and the form wrote a row that was then read and removed.
The cheapest claim to check is the one a stranger can check too: fetch the page, hash it, compare.
What was decided, and what was not
-
One page, or a small site?
ChoseOne page with one form
NotA home, an about and a shop
The only action is a waitlist. Two more pages would give nobody a reason to click and split the same form across them; one page is one decision for the reader.
-
A storefront platform, or a Worker?
ChoseA Worker and a key-value store
NotA hosted storefront with a theme
A monthly fee and a theme to fight, for a page with nothing to sell. The whole thing is 14,818 bytes and costs nothing while it waits for stock.
-
A language toggle, or two routes?
ChoseTwo routes, one form, one list
NotA toggle on one page
A toggle hides one language from a search result and from a link someone sends. Two routes are two addresses, and both post to the same list.
How this was measured
- The byte count and hash come from the file that was deployed, read back over HTTPS, not from the build output.
- Both language routes were fetched and hashed separately; the form on each posts to the same endpoint.
- The waitlist was proved by writing one row from a real browser session, listing it with the CLI, then deleting it.
Receipts
- momsbalm.comthe live English page
- momsbalm.com/vn/the Vietnamese page, priced in dong
- the launch fileevery tick in LAUNCH.md is a command or a read-back
What this page does not claim
- The list is read from the command line; there is no admin screen, by design at this size.
- No stock, no payments and no accounts: the page takes a name, and the sale happens elsewhere.
- The English page has no price. That is a decision recorded on 2 November, not an omission.
When it happened
- brief, build, launch gate and a real waitlist row written and removed
- the page returns to the tree for a last copy pass; the list stays empty