How it is wired
Every screen in this prototype, and what leads to what
This diagram is not drawn. It is read out of the source each time the site is built, so it cannot quietly stop being true.
19
screens
7
endpoints
58
connections found
87
files read
Built 5 Sept 2026, 10:08 am by reading every file under app/, components/ and lib/, resolving each path it finds against the routes that actually exist on disk.
The graph
Columns are distance from the front page. The header and footer are on every screen, so their links are left out of this picture — counting them would make everything one step from everything and the diagram would say nothing. They are listed underneath instead.
Not on the diagram: 7 with no path from the front page
Reached through the header or footer, opened directly by URL, or called by a component that sits in the layout rather than in a screen. Drawing them as a column of boxes with no lines would only make the diagram harder to read, so they are named here instead — and the connections that do run into them are in the list below rather than in the picture.
- /api/auth
- /api/cases
- /api/health
- /demo
- /map
- /offline
- /presentation
Every connection, as a list (58)
/
- links there /about — written in the screen itself
- links there /check — written in the screen itself
- links there /compare — written in the screen itself
- links there /patterns — written in the screen itself
- links there /radar — written in the screen itself
- links there /report — written in the screen itself
- links there /track — written in the screen itself
/check
- links there /check/report — written in the screen itself
- links there /patterns — written in the screen itself
- links there /report — written in the screen itself
/check/report
- sends you there / — written in the screen itself
- links there /check — written in the screen itself
- sends you there /check — written in the screen itself
- links there /report — written in the screen itself
/demo
- links there /about — via lib/demo.ts
- calls it /api/cases — written in the screen itself
- calls it /api/health — written in the screen itself
- calls it /api/radar — written in the screen itself
- calls it /api/triage — written in the screen itself
- links there /check — via lib/demo.ts
- links there /compare — via lib/demo.ts
- links there /map — via lib/demo.ts
- links there /offline — via lib/demo.ts
- links there /patterns — via lib/demo.ts
- links there /radar — via lib/demo.ts
- links there /report — via lib/demo.ts
- links there /report/details — via lib/demo.ts
- links there /report/review — via lib/demo.ts
- links there /report/urgent — via lib/demo.ts
- links there /track/[ack] — via lib/demo.ts
- links there /verify — via lib/demo.ts
/map
- links there /about — written in the screen itself
- names it /report/review — written in the screen itself
- names it /track/[ack] — written in the screen itself
/offline
- links there /check — written in the screen itself
- links there /report — written in the screen itself
/patterns
- links there /check — written in the screen itself
/radar
- calls it /api/radar — written in the screen itself
- links there /patterns — written in the screen itself
- links there /report — written in the screen itself
/report
- calls it /api/triage — written in the screen itself
- names it /report/urgent — written in the screen itself
/report/details
- sends you there /report — written in the screen itself
- sends you there /report/review — written in the screen itself
/report/review
- sends you there /report — written in the screen itself
- sends you there /report/details — written in the screen itself
- sends you there /track/[ack] — written in the screen itself
/report/urgent
- sends you there /report/details — written in the screen itself
/signin
- names it /track — written in the screen itself
/track
- links there /signin — written in the screen itself
- links there /track/[ack] — written in the screen itself
- sends you there /track/[ack] — written in the screen itself
/track/[ack]
- links there /about — written in the screen itself
- calls it /api/receipt — via components/case-receipt.tsx
- links there /patterns — via components/case-board.tsx
- links there /track — written in the screen itself
- links there /verify — via components/case-receipt.tsx
/verify
- calls it /api/receipt/key — written in the screen itself
Sends you there: A router.push or a redirect: the screen moves you on its own.Links there: An anchor or a Link with a literal path — you choose to follow it.Calls it: A request to an internal endpoint. No screen changes.Names it: A module this screen imports contains that route as a string. Strong evidence, not proof.
The two journeys that matter
Filing a complaint
- /
- /report
- /report/urgent
- /report/details
- /report/review
4 steps from the front page, by the shortest route the scan can see.
Coming back to a complaint
- /
- /track
- /track/[ack]
2 steps from the front page, by the shortest route the scan can see.
On every screen
The header and footer put these within one tap of everywhere, which is why they are not lines on the diagram.
- /
- /about
- /api/auth
- /api/cases
- /api/health
- /check
- /compare
- /map
- /offline
- /patterns
- /radar
- /report
- /report/details
- /report/urgent
- /signin
- /track
- /verify
What the scan flags
Links to nowhere
None. Every path written in this codebase resolves to a route that exists.
No contextual way in
- /api/auth
- /demo
- /presentation
Reachable from the header or footer, or not at all. For a demo control room that is intentional; for a screen in a flow it is a bug.
No path from the front page
- /api/auth
- /api/cases
- /api/health
- /demo
- /map
- /offline
- /presentation
Counting only links written into screens, not the header and footer.
What this map cannot see
It reads what is written. A destination assembled at runtime from pieces, a redirect issued by the service worker, a window.location assignment, or a screen reached only through the back button leaves nothing in the source for it to find.
Where a pattern is beyond it the result is a missing line, never a guessed one — so this understates the product and never overstates it. The dashed grey lines are the weakest evidence on the page: a module the screen imports contains that route as a string, which is how the filing flow decides where to go next, but a module could name a route it never actually returns.