the index — for the people building this

Every page this site has, and every one it doesn't yet.

Each row is generated from the page's own source file, so this list cannot drift from the site. The page to send someone to is the door; this one is the map behind it.

Marketing pages
4
Ideas, unbuilt
6
Design labs
11

01 — the marketing pages

Concepts.

Each one is a different argument for the same product, aimed at someone different. The greyed rows have been thought of and not built.

01

The front door /door One screen, one moving ground, one sentence, two ways in. Took the apex from The Seam on 2026-08-23; moved to /door on 2026-09-07 when this index took it. Wants a hero video at public/design/marketing/hero.mp4 and falls back to a plate montage without one.site/pages/door.html · layout-seam

live
02

The construction page /seam The long one. Hero loom, the five plans, the feature ledger, the honest answers, a look at the wall. It was the front page until the door replaced it. Owns the whole visual language in public/design/seam.css.site/pages/seam.html · layout-seam

live
03

How it works /photopool The eight-act scroll narrative, with a live pool embedded in the hero. Still on the OLD site.css layout, not the seam one, which is why it can never light up in the nav.site/pages/photopool.html · layout-site

live
04

One occasion, argued end to end /weddings The template for occasion pages: same product, one audience, its own care label. Nothing here is licensed stock standing in for a real wedding, on purpose.site/pages/weddings.html · layout-seam

live
05

Plans, on their own page /pricing The five plans are only arguable inside The Seam right now, three screens down. A page of their own is the one every visitor asks for by name and the one every ad would point at. The numbers already come from config.plans through the build (plan_<key>_price and friends), so this page would not restate them, it would expand them.site/catalog-ideas.json

idea
06

The iOS app /app The host app is real and in external TestFlight, and the site does not mention it anywhere. Needs: what the app does that the browser cannot (the wall, the projector, the deck), and an honest line about it being beta.site/catalog-ideas.json

idea
07

For venues and planners /for-venues The franchise system is built (join and invite keys, comped mega_plus events, wholesale physical goods, the /staff/franchises workspace) and has no public page at all, so the only way to become one is to already know. This is the highest-leverage missing page: it sells to the people who run twenty parties a year instead of one.site/catalog-ideas.json

idea
08

Photobooks /photobooks The editor and the print foundation exist; Lulu fulfilment is still a stub. Do not build this page until an order can actually be placed, or it becomes the thing the care label has to apologise for. Parked here so it is not forgotten.site/catalog-ideas.json

idea
09

One code, printed once /codes Durable QR codes: print a code, repoint it at whatever event is happening this weekend. Built (/q/<key>, the qr_links table, the /qr manager) and completely unadvertised. Small page, concrete demo, no new engineering.site/catalog-ideas.json

idea
10

Another occasion no route yet Weddings proved the shape: same product, one audience, its own care label. The next one is whichever occasion we have actually run. Do not write it before we have, and do not illustrate it with stock. That rule is the reason the weddings page is any good.site/catalog-ideas.json

idea

02 — the labs

Where the pieces were worked out.

Internal, unlinked from anywhere else, and kept: each one is the working version of something that now ships inside a real page.

01

Wordmark animation studies /lab/wordmark Side-by-side entrance candidates for the drawn log wordmark.site/pages/lab/wordmark.html · layout-seam

live
02

Compact mark candidates /lab/mark Marks derived from the wordmark for the collapsed nav bar. F3a is the one in use.site/pages/lab/mark.html · layout-seam

live
03

Lockup to mark /lab/collapse The bar collapse, isolated. Ships in every seam page's header.site/pages/lab/collapse.html · layout-seam

live
04

The rolling O /lab/roll The O rolling down the stem, used as a section structure.site/pages/lab/roll.html · layout-seam

live
05

Shapes as rolling bodies /lab/shapes A system where a shape's number of sides decides how it moves.site/pages/lab/shapes.html · layout-seam

live
06

Neon as a state channel /lab/neon Console lettering. Renders on the host cascade, not the seam one. Shipped into the host sidebar.site/pages/lab/neon.html · layout-console-lab

live
07

The console's system /lab/console The acceptance surface for the host console's rebuild onto the app's printed-room grammar (2026-09-07): every pp-* component under ink, pink and blue, the room developing and breathing, the wordmark fold and kick, the switch, the tiles, the notice, a rolling figure. If it is not right here it is not right anywhere.site/pages/lab/console.html · layout-app

live
08

Buttons, six ways /lab/buttons Ideation for the console's one button family (2026-09-07). The first cut was a faithful port of BrandButton.swift and read as generic pills on the web; these are six directions that each obey the room, to pick from. Delete when one wins and lands in console.css.site/pages/lab/buttons.html · layout-app

in progress
09

Buttons with glyphs that move /lab/glyphs The app's icon method on the web (2026-09-07): stages generated with the image model, parts measured off the art, one progress per glyph, a spring between states. Direction 1's chrome (bare words; only the key has a face). Delete when it lands in console.css.site/pages/lab/glyphs.html · layout-app

in progress
10

What replaces the popups /lab/layers The trays and popups round (2026-09-07): one selection grammar (a bar under the word), feedback on the trigger instead of a toast, share as an anchored popover, settings rows that open in place, hold-to-confirm for the consequential acts, the context menu without its blur, and creating an event as a room in the stage. Approve here before it lands on the board.site/pages/lab/layers.html · layout-app

in progress
11

The key, lit /lab/key Round three of the console's button (2026-09-07), after research into the app's own controls: the key is the app's showcoat (never flat) lit by the pointer the way the phone's is lit by tilt; the press dims the paint and throws the label into its two ink passes; ghosts keep their hairline. Delete when it lands in console.css.site/pages/lab/key.html · layout-app

in progress

03 — the rest

Reachable only from the footer, and load-bearing for exactly that reason.

01

Terms of service /terms Plain-language early-access terms. Reachable only from the footer.site/pages/terms.html · layout-blank

live
02

Privacy /privacy What is collected, what is not, how long it is kept. Reachable only from the footer.site/pages/privacy.html · layout-blank

live
03

Not found /404 Rendered by the error handler, not served from a route of its own, so it is listed here without a link. sitemap:false.site/pages/404.html · layout-blank

live
04

Server error /500 Rendered by the error handler, not served from a route of its own, so it is listed here without a link. sitemap:false.site/pages/500.html · layout-blank

live

04 — how to get on this list

Have the idea, then write it down.

Both halves of this index are files. Nothing about the page below needs touching either way.

An idea for a page that does not exist. Add an entry to backend/site/catalog-ideas.json. Only role and note are required; write the honest note, including what already exists to build it from.

{
  "role": "For venues and planners",
  "path": "/for-venues",
  "note": "What it would argue, and what is already built.",
  "order": 120
}

A page you are building. Add a catalog block to its front-matter, then delete its entry from the ideas file. A page with no block is deliberately absent, which is how the thirty-odd signed-in console pages stay out of a marketing index.

"catalog": {
  "group": "concept",   // concept | lab | legal
  "status": "live",     // live | draft
  "role": "The page in a phrase",
  "note": "What it is for, and what is still missing from it.",
  "order": 50
}

Then npm run build:site from backend/. A page also needs a route in MARKETING_PAGES in backend/src/handlers/app.js before it will serve.