| Layer | Color | Meaning |
|---|---|---|
| 1 — Domains | Soft blue | What users type. party. 301-redirects into hub. |
| 2 — Projects | Soft green | Cloudflare Pages projects. Both static. |
| 3 — Sections | Soft violet | Top-level paths inside each project. |
| 4 — Roles | Soft amber | Soft-fenced via /auth/gate.js. Owner / member / viewer. |
| 5 — Data | Soft terracotta | Where state actually lives. KV is the only mutable store; everything else is static JSON. |
hub. and party. both resolve to substrate (party. via 301 redirect rule)./ (landing) and /manage (PWA). Substrate holds the rest./cece/rainhairstudio/ uses owner/member/viewer). Public pages like / and /manage have their own auth (PRESET_ACCOUNTS / Firebase Auth).OUR_HUB_DATA (binding env.OUR_KV). /data/*.json = repo-committed static data files. _data/*.json = per-feature data inside a section (e.g., /cece/rainhairstudio/_data/). The _ prefix signals "data, not pages" but does not enforce privacy.