Astro file-based routing. .astro = pages, .ts/.json.ts = endpoints,
[id]/[provider]/[...proxy]/[...slug] = dynamic segments. Anything _-prefixed
(_components/, _utils/, _ServerDashboard.tsx, _perms_readme.md) is NOT a route — co-located
islands/helpers/docs.
Subtrees:
index.astro (/), home, indie.astro, business/, networking/,
support/, impressum/privacy/termsOfUse, docs/, experiment.astro, redirect stubs
(discord.ts, deluxus.ts, robots.txt.ts).server/, credit/, games/, chooseServer/, settings/, friends/,
home.astro.admin/** (see admin/AGENTS.md) — separate design system + auth gate.api/** (see api/AGENTS.md) — reverse proxy + funnel auth.login/, register/ (see login/AGENTS.md).lp/ (see lp/AGENTS.md).src/layouts/ decide the shell per surface (public→ScreenLayout/standalone,
admin→AdminLayout, auth→AuthLayout, legal→privacyLayout, docs→Docs).getUser/token cookie from src/session.ts; islands call src/client/solid_api.ts,
SSR frontmatter calls src/client/api.ts.index.astro runs the lp cookie A/B redirect (see lp/AGENTS.md); files under
_components/landing/ are shared across / + all lp/* variants.lp/e/** (active WIP).