The System Book · The Works
What's caught, and where it goes
Every door into Zorb, checked the same way, and held until it reaches a hand.
Two minutes for the bold lines; about fifteen with every card open.
Part 1
The whole thing at once
However a message used to reach Zorb, it was anyone's guess which hands would catch it. Now every door — home, Genuine, Sewn for Others, Licensing — is checked the same way by one clerk (the Worker) before it's filed into one cabinet (CRM - Eagle) both teams behind Zorb can open.
The names we use
- The five doors
- Home, Genuine, Sewn for Others, Licensing, and the 404 page — served as static files, not a database.
- The Worker
- The one program,
src/worker.js, that serves every page and catches every form posted to/api/form. - The form handler
src/form.js: checks each submission, runs the spam check, and files it into the right table.- CRM - Eagle
- The shared Airtable base — also used by Zorb's sibling brands — every door writes into.
- Website Inquiries
- The table that holds Contact, Report a listing, and Share your story.
- Licensing Applications
- The table for an application to carry the Zorb Inside® mark.
- Reseller Applications
- The table for an application to resell or distribute Zorb.
- The honeypot
- A field a real visitor never sees. A bot that fills it is told it worked, and nothing is kept.
What is public, and what is not?
| Anyone can see | Kept for the two teams |
|---|---|
| Every page's words, and every form's own fields and labels | What a visitor types into a form, once it's sent |
| Which old addresses redirect, and where they land | Which hand a message is addressed to, and when |
Part 2
The paths
The system is easiest to understand by following what someone hands over, all the way to the hand that catches it. Each path is what happens, step by step, from one door's side.
1What happens when someone uses the Contact form?It asks who they are and what they're making, then is held for the right hand.
It's like telling the person at the counter what you need, so they know which hand to pass you to.
- They say whether they're a maker or a business, and what they're making (required).
- They tick which applications they're working in, and roughly how much fabric they need.
- They choose which hand should answer: Wazoodle or AKAS Tex.
- The page checks every required field and the spam check before it will send.
- The Worker checks the spam check again on its own side, then writes one row to Website Inquiries, addressed to the hand they chose.
- A thank-you message names that hand and says one to two business days.
Why: the visitor picks the hand, so the message starts with the right people.
2What happens when a brand applies to carry the Zorb Inside® mark?Products, fabrics, and where they sell — then a row in Licensing Applications.
It's like applying for a stamp of approval, in writing.
- They give their brand, their website, and what they make.
- They say where they bought their Zorb (Wazoodle, AKAS Tex, an approved distributor, or not yet) and where they sell.
- They agree to the Zorb Inside® terms — the form won't send without that.
- The Worker writes the application to Licensing Applications.
Licensing isn't open on every brand's door: the Worker checks which mark this site carries before it accepts an application.
3What happens when someone reports a listing?A link to the listing and where they saw it, with its own note in its own column.
It's like flagging something at the counter, with room to explain.
- They paste a link to the listing and say where they saw it (both required).
- They can add anything else in a note — kept in its own column, so it never overwrites what another form answered.
- The Worker writes the report to Website Inquiries, addressed to Wazoodle.
4What happens when a maker shares their story?Their story, and whether it can be shared — one row in Website Inquiries.
It's like a maker's notebook, opened for anyone to read, with their permission.
- They write their story (required).
- They say whether Wazoodle may share it publicly.
- The Worker writes it to Website Inquiries, addressed to Wazoodle.
5What happens when someone applies to resell or distribute?Reseller or distributor, where they sell, how much — then a row in Reseller Applications.
- They say whether they're a yardage reseller or a distributor; a distributor also gives the regions they serve.
- They say where they sell, how much they expect to buy, and where they buy their Zorb from now.
- They agree to the seller conditions — required before the form sends.
- The Worker writes the application to Reseller Applications, addressed to Wazoodle for a reseller or AKAS Tex for a distributor.
6What happens when someone visits an old address?Old addresses into Zorb's previous site now land on the matching page or section.
It's like a forwarding address taped to an old mailbox.
- The old generation pages all point to the new site's Generations section.
- Technology and Sustainability point to the new site's own sections for each.
- Contact and Contact Us point to the home page's form.
- The old licensing program address, and Zorb Inside, point to the new Licensing page.
- Every address is listed twice — with and without a trailing slash — so either form of the old link still works.
7What stops a bot, or a careless resubmission?A field no person can see, and a real spam check on both ends.
- Every form carries a hidden field a real visitor never touches; a bot that fills it is told it worked, and nothing is saved.
- Every form also carries a real Cloudflare Turnstile widget; the Worker checks its answer with Cloudflare before it writes anything.
- Only requests from the site's own domain, its subdomains, or the preview address are accepted.
Part 3
The parts
One card for each part of the system. Each opens with its bold line, then what it's like, then how it works.
1What is the Worker?The one program behind every door and every form.
It's like a single clerk who knows every counter.
One Cloudflare Worker (src/worker.js) answers every request: it serves the five static pages from public/, and sends anything posted to /api/form to the form handler. No separate server, no database to keep patched.
2What is the form handler?The part that checks, routes, and files.
It's like the clerk's rulebook.
src/form.js holds the rules for every one of the five forms: what's required, what the spam check needs to say, which of the three tables a submission belongs in, and which hand's address goes on it. It's shared with Zorb's sibling brand sites, so the rules stay the same everywhere.
3What is CRM - Eagle?The one base every brand's doors write to.
It's like one filing cabinet for four shops.
An Airtable base used by zorbfabrics.com and its sibling brand sites. Three tables hold what comes in here: Website Inquiries, Licensing Applications, and Reseller Applications.
4What are the redirects?A list that keeps old links alive.
It's like a forwarding address taped to an old mailbox.
public/_redirects maps old addresses from Zorb's previous site to the matching page or section of this one. Cloudflare reads the list and sends a visitor on before the new site ever has to answer for the old address.
5What is the spam check?A real Cloudflare Turnstile widget, not a placeholder.
It's like a doorperson who only ever nods once.
Every form carries a Turnstile widget with the site's real key. The Worker checks the visitor's answer with Cloudflare on every submission; a bad or missing answer is refused before anything is written.
Part 4
The promises
What this system keeps to, whatever else changes.
- No form is filed anywhere until the spam check passes. A bad or missing answer is refused first.
- A bot that fills the hidden field is told it worked, and nothing is kept.
- Every message is addressed to a real hand — Wazoodle or AKAS Tex — never left unaddressed.
- Nothing typed into a form stays on the visitor's device between visits.
- An old address is redirected, never left to answer with nothing.
- No key, token, or password lives in any repository; the secrets it needs are set only in the Cloudflare dashboard.
- What Zorb says about itself — the absorbency figures, the under-two-seconds, what it is and isn't — is checked against the claims register before it's repeated anywhere on these three pages.
What runs by itself, and what is done by hand?
| By itself | By hand |
|---|---|
| The spam check, on every submission | Moving the zorbfabrics.com domain onto this site |
| Routing a message to the right hand, by what the visitor chose or typed | Adding the blog's old addresses to the redirect list |
| Redirecting an old address to its new page | Anything the form handler doesn't already do — it takes no payments at all |
How was it checked?
These three pages were checked against the live site, the real form fields, the ten fabrics' claims register, and the Airtable base they file into — not against an idea of what Zorb should be. An independent read checked every figure here — the fabric count, the door count, the table names, the maker count, and the redirect list — against the actual code, the commit history, and the base, before they were published.
What's ahead?
- Moving the zorbfabrics.com domain onto this site, and retiring the old one.
- A human walk of all five doors against the live base — already queued.
- Whatever the next fabric, the next maker's story, or the next door adds to this page, added the same way: checked, then published.
For buildersThe program, the tables and the settings behind each card above.
- The program. One Cloudflare Worker, named
zorbfabrics-site(wrangler.jsonc), servingpublic/as static assets withrun_worker_firston/api/*;src/worker.jsroutesPOST /api/formtosrc/form.js. - The base. Airtable base
app9FrWjSN7q7ArOB(CRM - Eagle), tablestblodmY0PFIk2D1bf(Website Inquiries),tblpKtGIfZdeXZRLH(Licensing Applications),tble1k3gQCgAPm4Li(Reseller Applications). Field IDs are used throughout, not field names, so renaming a field in Airtable never breaks a form. - Secrets.
AIRTABLE_TOKENandTURNSTILE_SECRET, set only in the Cloudflare dashboard; never in this repository. - Deploys. A push to a non-production branch uploads a Workers preview only; the production branch gets a full
wrangler deploy.