Architecture — channel-surf-tv

DoDAF-lite architecture view set. Authored views are Mermaid (render natively in GitLab); mechanically derivable views are generated — regenerate with npm run arch:gen after schema or route changes. npm run health cross-checks the live worker routes against the API spec, so this set can't silently drift far.

AV-1 — Overview & Summary

Item Value
System channel-surf-tv — surf-culture reference site (spot atlas, surfers, quotes, clips, Instagram)
Architecture Static Astro site + read-only Cloudflare Worker API + D1 + R2
Users Public visitors (read-only); one operator/curator (all writes)
Public interface GET /api/* per docs/api/openapi.yaml; live docs at /api/docs
Data plane D1 channel-surf-tv-spots (additive migrations); R2 channelsurf-bucket (media)
Background work 6-hourly worker cron: Instagram account scoring + feed cache refresh
Environments Production worker channel-surf-tv on workers.dev; local via wrangler dev / astro dev
Verification Vitest unit/API + Playwright e2e; npm run health:check gates conformance + API drift

View index

View What it answers File
OV-1 Operational concept Who uses it, what flows between the big pieces ov-1-operational-concept.md
SV-1 System interfaces Components and the contracts between them sv-1-system-interfaces.md
SV-2 Deployment topology Where it runs, how it deploys sv-2-deployment-topology.md
SV-4 Data flow Source → curation → store → serve sv-4-data-flow.md
Data schema (generated) D1 ER diagram from migrations/*.sql generated/db-schema.md
Route inventory (generated) Site pages + API endpoints + background jobs generated/routes.md

Related artifact families under the same standard: