Rafa's words, verbatim:
"add the following prompt to the backlog to create a landing page for the goldfish (use the same site)"
"ok landing page now should be at npc.here.now/demo-goldfish deploy and move workbench to /demo-goldfish/workbench across the board"
The site was one page: the workbench, a spec and an engineering tool. Facilitators, the people Goldfish is for, need a page that says what it does for a session.
The landing page went through two rounds (01-concept/landing/):
01-concept/landing/research/voice/, plus a study of how competitors and neighbouring products position themselves. It was then written as a copy deck (01-concept/landing/copy-deck.md) that Rafa approved before any layout.site/landing.src.html, with its assets in site/landing/: photos, the 3D model's data and the 404 page.site/build.py --web writes it to site/web/index.html, along with js/gf.js (resolution.js and goldfish.js, unchanged, with the profile and locales).site/web/workbench/.files/, print/, assets/, r/). The web build rewrites its links one level up./r, the address the firmware writes to the tag (daemon.py READER).site/index.html is still the workbench.site/landing_model.py (run it after a CAD change; the web build warns when it is stale).rafa-inbox Worker route (POST /goldfish/presale) is not built. Changing that Worker is Rafa's call.site/landing/photos/PHOTOS.md). A shoot with real facilitators should replace them before launch.# ADR-0022: A landing page at the site root; the workbench moves to /workbench/ - **Status:** accepted (2026-10-15) - **Date:** 2026-10-15 - **Requirements touched:** the site (B-74) - **Builds on:** ADR-0019 (firmware in the site) ## Context Rafa's words, verbatim: > "add the following prompt to the backlog to create a landing page for the goldfish (use the same site)" > "ok landing page now should be at npc.here.now/demo-goldfish deploy and move workbench to /demo-goldfish/workbench across the board" The site was one page: the workbench, a spec and an engineering tool. Facilitators, the people Goldfish is for, need a page that says what it does for a session. The landing page went through two rounds (`01-concept/landing/`): - **Round 1** led with the hardware and was rejected. - **Round 2** was rebuilt from facilitators' own words: 361 verbatim quotes in `01-concept/landing/research/voice/`, plus a study of how competitors and neighbouring products position themselves. It was then written as a copy deck (`01-concept/landing/copy-deck.md`) that Rafa approved before any layout. ## Decision 1. **The site root is the landing page.** - Its source is `site/landing.src.html`, with its assets in `site/landing/`: photos, the 3D model's data and the 404 page. - `site/build.py --web` writes it to `site/web/index.html`, along with `js/gf.js` (resolution.js and goldfish.js, unchanged, with the profile and locales). 2. **The workbench moves to `site/web/workbench/`.** - Its shared folders stay at the root (`files/`, `print/`, `assets/`, `r/`). The web build rewrites its links one level up. - The phone reader stays at `/r`, the address the firmware writes to the tag (`daemon.py` READER). - The local build is unchanged: `site/index.html` is still the workbench. 3. **What the page says.** - It sells a better session, not the device: "Have better conversations. Make better decisions." - The hardware appears only as proof, under "Good tech, without the hassle." - It uses the word "session" and US spelling. - It never makes claims the design can't keep. The note sentences are hand-written until the speech model exists, and the page says so next to every note it shows. 4. **What runs on the page.** - The demos run the JS mirror of the firmware (goldfish.js, held bit for bit to the Python by the light-ring parity check). - The 3D model is the real CAD: the printed parts, the inner parts, the 50 LEDs and the 66 routed wires, packed by `site/landing_model.py` (run it after a CAD change; the web build warns when it is stale). 5. **Links that go nowhere yet** (tech specs, support, company pages) go to an on-brand 404 page. 6. **The sign-up form sends nothing.** The `rafa-inbox` Worker route (`POST /goldfish/presale`) is not built. Changing that Worker is Rafa's call. ## Consequences - **Photos.** The page uses free stock photos (Unsplash and Pexels licenses, checked on each photo's page; `site/landing/photos/PHOTOS.md`). A shoot with real facilitators should replace them before launch. - **Placeholders.** Price, ship date, how long sign-ups are kept, and the Worker URL are marked [LIKE THIS] on the page. - **The GitHub link** points at a private repository until Rafa makes it public.