| Route | Source |
|---|---|
/404 |
src/pages/404.astro |
/creators/ |
src/pages/creators/index.astro |
/culture/:slug |
src/pages/culture/[slug].astro |
/culture/ |
src/pages/culture/index.astro |
/ |
src/pages/index.astro |
/quotes/ |
src/pages/quotes/index.astro |
/spots/:slug |
src/pages/spots/[slug].astro |
/spots/ |
src/pages/spots/index.astro |
/surfers/:slug |
src/pages/surfers/[slug].astro |
/surfers/ |
src/pages/surfers/index.astro |
Dynamic detail URLs (/spots/:slug, /surfers/:slug) are rewritten by the worker to the prerendered __detail shells, which hydrate from the API.
Source of truth: docs/api/openapi.yaml · reference: docs/api/API.md · live: /api/docs.
| Path | Summary |
|---|---|
GET /api/spots |
Paginated, filterable surf spot list |
GET /api/spots/map |
Lightweight spot markers for the Leaflet map |
GET /api/spots/meta |
Facet counts for the spot filter sidebar |
GET /api/spots/{slug} |
Spot detail with images, tags, and linked surfers |
GET /api/surfers |
Paginated, filterable surfer list |
GET /api/surfers/meta |
Facet counts for the surfer filter sidebar |
GET /api/surfers/{slug} |
Surfer detail with images and linked spots |
GET /api/quotes |
Quotes wall collection |
GET /api/quotes/random |
Quote of the Day |
GET /api/clips |
Video clip inventory |
GET /api/instagram/feed |
Curated Instagram feed |
GET /api/instagram/accounts |
Curated account scores with follower history |
GET /api/openapi.json |
This OpenAPI specification as JSON |
GET /api/docs |
Human-readable API reference |