# Site Information Architecture (Stage 1.3) Status: draft for Stage 1.5 gate approval. Authority: this doc, together with [EPISODE_MAP.json](EPISODE_MAP.json), governs every URL emitted by the site generator in `c:\code\ggg\generator\`. ## Principles 1. **Identity-first URLs.** Every per-episode URL is keyed on the immutable map `filename` (without the `.mp3` extension). When `filename` is locked, the URL is locked. `track_number` is never in a URL. 2. **One landing page per learning band.** Nine top-level navigation routes, one per band. No "appendices" umbrella. 3. **Audio and learning views.** Listeners can browse by feed order (chronological / track) or by curriculum (paired view). Both views resolve to the same per-episode pages. 4. **No legacy redirects.** Greenfield launch. Old paths (`ep##-slug.html`, `appendix-x-*.html`, anything with `cc-NN-` only) simply do not exist on the new site. 5. **All pages are static.** No client-side routing. Every URL serves a real file from `c:\code\ggg\site\`. 6. **Accessibility is non-negotiable.** Semantic HTML, single H1 per page, named landmarks, keyboard-reachable controls, captions/transcripts linked from every episode page. ## URL map All URLs are rooted at `https://lp.csedesigns.com/ggg/`. Local site build mirrors this layout under `c:\code\ggg\site\`. | URL | Source | Description | |-----|--------|-------------| | `/` | `generator/templates/home.html` + map | Homepage. Curriculum view by default. Toggle for feed view. Hero, what-this-is, "Start here" CTA pointing at `/chapters/ch-00-welcome/`. | | `/learn/` | `generator/templates/learn.html` + map | Full curriculum-ordered view: chapters 00..22 interleaved with their paired challenges, bonus block, then appendix bands in order ref / git / tools / agents / sec / a11y. Same ordering as `track_number`. | | `/feed-order/` | `generator/templates/feed-order.html` + map | Strict `track_number` list 1..79 with no grouping. Direct mirror of the RSS feed. | | `/feed.xml` | `generator/generate-feed.js` + map | Public RSS 2.0 + iTunes podcast feed. | | `/chapters/` | `generator/templates/band-landing.html` + map filter `learning_band=chapter` | Lists 23 chapters in `topic_number` order. | | `/challenges/` | same template, filter `learning_band=challenge` | Lists 16 code challenges in `topic_number` order. | | `/bonus/` | same template, filter `learning_band=bonus` | Lists 5 bonus challenges in `topic_number` order. | | `/ref/` | same template, filter `learning_band=reference` | Lists 6 reference appendices. | | `/git/` | same template, filter `learning_band=git` | Lists 5 git appendices. | | `/tools/` | same template, filter `learning_band=tools` | Lists 12 tools appendices. | | `/agents/` | same template, filter `learning_band=agents` | Lists 6 agents appendices. | | `/sec/` | same template, filter `learning_band=sec` | Lists 2 security appendices. | | `/a11y/` | same template, filter `learning_band=a11y` | Lists 4 accessibility appendices. | | `/episodes//` | `generator/templates/episode.html` + map entry | Per-episode page. One per map entry. 79 pages total. | | `/media/.mp3` | `c:\code\ggg\site\media\` | Raw enclosure URL. Used by `` and `