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.
| 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 | 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:
docs/api/: OpenAPI spec (source of truth), generated
API.md, live /api/docs + /api/openapi.json served by the worker.docs/health/: append-only metrics.jsonl
snapshots + generated HEALTH.md (hotspots, thresholds, deltas).