Pages tree & dynamic routes
Complete file list
pages/[locale]/ contains 22 files, grouped by responsibility:
Entry and aggregation
Section pages
Detail pages
Redirects
Note: /[locale]/game does not exist. useLayoutRouteMode and prefetch matchers still include it as a standalone-pattern branch, but there is no pages/[locale]/game file. This is the "legacy matcher" recorded as GOTCHAS.md item 21.
Protected and feed
getStaticPaths behavior
web/[id].tsx:pathsflattens the three groups (web / game / early) fromdata/projectsfor the active locale.fallback: false.life/[slug].tsx:pathsflattensdata/life(gameData / travelData / otherData) for the active locale.fallback: false.blog/[slug].tsx:pathspulls the slug list fromblog-index.json(when the external content repo is configured) or falls back to the bundledcontent/blog/init/posts.fallback: 'blocking'allows new slugs to be rendered on demand and then cached via ISR.
State and layout contexts
Several contexts sit alongside routes-and-proxy:
contexts/AppContext.tsx— site-wide interactive state: loading sequence, power/battery/inversion, real-time stats, home-page typing effects, column hover state.contexts/TransitionContext.tsx— controls route transition animations. All internal navigation must useuseTransition().navigateTo(url), neverrouter.push(). SupportssetBackOverride()so detail views and lightboxes can intercept BACK behavior.contexts/LayoutAnchorsContext.tsx— registers the active scroll container. The layout uses a locked-height content container, so deep-link scrolling must target that container instead of the document viewport.contexts/SiteAssetsContext.tsx— exposes resolved site-shell assets (favicon,og:image, avatar).
Route loading overlay
useRouteLoadingKind(router) decides the loading overlay variant from the leaving path, not the target:
home/content → blog detail: default right-side overlay; left HUD stays visibleblog detail → blog detail: standalone overlay; left HUD is already hidden
Do not flip this to target-based selection — it breaks one of the two directions. This is GOTCHAS.md item 7.