# URL-Driven Section Routing — Design **Date:** 2026-05-07 **Status:** Approved ## Goal Replace the single-page client-state accordion with multi-page URL-driven routing. Each portfolio section gets its own static URL. The sections list remains visible at all times; clicking a section heading navigates to its page. ## Route Structure Delete `app/page.tsx`. Create `app/[[...slug]]/page.tsx` (optional catchall). | URL | Active section | |---|---| | `/` | `sections[0].slug` (first section, URL stays `/`) | | `/intro` | `intro` | | `/bio` | `bio` | | `/skills` | `skills` | | `/experience` | `experience` | | `/projects` | `projects` | `generateStaticParams` emits one entry per section plus the root: ```ts [{}, { slug: ['intro'] }, { slug: ['bio'] }, ...] ``` ## Component Changes ### `SectionAccordion` (entity) - Replace `onClick: () => void` prop with `href: string` - Inactive state: render `` instead of `