The brief: config depth somewhere near Cloudflare’s, a target user who is more basic than that sounds, and Shopify as the UX reference. This page decodes what Shopify’s rail actually does, then renders two live rails Relay could adopt. Click around both; click any of today’s 25 doors to see where it lands.
Decided, 2026-08-30: Option A, nouns only — revised the same day to ten
doors. Recorded as relay-board · DEC-029. On review, Library and
Graph came back out of the nesting (EC: “those need to be their own
screen”), which sharpened the rule the rail now runs on: a door for a
different kind of thing or a different way of seeing; a view for the same list,
filtered. Only Series and Trash nest — both are the relay list itself. Option B
stays rendered as the record of the road not taken.
Four moves, all structural, none of them “fewer features”:
| Nouns only | Orders, Products, Customers, Discounts, Content, Markets, Finance. Zero verbs in the rail. “Add product” is the primary button on Products, not a destination beside it. Relay’s rail carries four verbs today: Send, Capture, Connect, Search. |
| No section headers | Ten flat items. Headers ask a new user to learn a taxonomy before they can navigate; below roughly a dozen items, flat beats grouped. Relay has four headers over 25 items. |
| One settings door, pinned | Every configuration surface (about twenty sub-pages) sits behind a single bottom-pinned Settings entry. Relay exposes five account-shaped doors: Organizations, Contract, Team, Profile, Settings. |
| One badge | Orders · 1: the count of things needing action today, and nothing else. Relay runs four competing attention surfaces: the Relays due badge, Inbox, Requests, and the bell. |
The reframe that matters: Shopify is not the simple end of a spectrum with Cloudflare at the other. Shopify’s config surface is enormous; Markets alone carries per-country rules. What it refuses to do is advertise that depth in the rail. So the target is not “in between”: it is Cloudflare’s depth behind Shopify’s width. Depth relocates into pages and behind one Settings door. Nothing gets trimmed, and the rail stops growing when the product does.
Both are built from the same rule set above; they differ on one question: does the rail speak in things or in actions? Option B is the end-state rail the app-surface diagnosis already names in its phase 5, so this is a real fork, not two coats of paint. Search lives in the top bar in both. Admin stays role-gated and invisible in both.
Today’s 25 doors. Click one to see its new address in each option:
10 doors · 0 verbs in the rail · 1 settings door · 1 badge
6 doors · 2 verbs in the rail · 1 account door · 1 badge
These are navigation prototypes, not screen designs: the panes sketch each
page’s header, primary actions and what it absorbs, so the question being tested is
“can I predict where my thing is?” rather than “is this pretty?”.
Screen-level design continues in concepts/app-v35/.
| A · Nouns only | B · Verbs are the product | |
|---|---|---|
| The bet | Users think in things: “where are my streams” has a door with that word on it. The Shopify translation, complete. | Users think in motion: Relay is a post office, not a filing cabinet. Send and Receive deserve doors because they are the product’s own grammar. |
| First-run read | Self-describing. A new user can name what each door holds before opening it. | Smaller and more opinionated. Two doors are invitations to act, which suits the streamlined cohort’s claim-first arrival. |
| The cost | Verbs sit one click deeper; the mobile drawer is two items longer. | “Where are my sessions” has no door. Everything at rest lives behind facets on one corpus screen, which must therefore be excellent. |
| Waiting-on-you | Inbox keeps its door and absorbs Requests; the one badge lives there. | Receive absorbs both Inbox and Requests: enter a Code, and everything already waiting for you, on one page. |
| Build distance | Needs the corpus views (phase 3) plus two new light pages, Home and Apps. | Is phase 5 of the shipped plan verbatim; phases 1–2 are already live or in review, so this is the shorter path. |
Shared floor, either way: depth relocates rather than shrinks, Search
goes to the top bar, account collapses to one door, one badge total, and
gating.ts can ship either rail as a cohort preset with nothing deleted and
every step reversible per account.
| Things or actions? | Decided: things. The rail speaks in nouns; the verbs become primary buttons on the pages that own them. This revises the phase-5 end state in the app-surface plan; phases 1–4 are identical under both and keep shipping. |
| How deep does nesting go? | Decided: barely. A door for a different kind of thing (Library: files are a corpus, not a filter) or a different way of seeing (Graph: a canvas, not a list). A view only for the same list filtered — Series and Trash on Relays. Ten doors, still flat, still inside Shopify’s own width. |
| One badge: which one? | Decided: Inbox. It absorbs Requests and carries the single “action needed” count. The bell keeps events; the Relays-due badge and the separate Requests surface retire. |
| Who gets it first? | Decided: same posture as phase 2. New accounts via the
streamlined preset; existing users untouched until the numbers
argue otherwise. Reversible per account. |
| Does Apps exist yet? | Still contingent. If the connector surface is thinner than a Shopify-style Apps page warrants at launch, Apps folds into Settings until it earns the slot. Seven doors instead of eight; nothing else moves. |