# 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 `