bcs-website/docs/adr/0002-page-copy-in-content-collections.md
Brad Rodgers cd91c4b97c Initial commit: BlueCap Strategies Astro site
Static Astro 5 site for BlueCap Strategies with exact live-site content
parity, deployed to k3s via GitOps (ArgoCD).

- Page copy in Markdown content collections (services, focus-areas, pages,
  insights) with a Zod SEO schema enforced at build time
- Homepage + About restored to exact live copy; real live-site imagery
- Build-time SEO linter (scripts/seo-lint.mjs) and Playwright e2e suite
- Multi-stage Dockerfile (nginx serves dist/) and Kustomize manifests (k8s/)
- Per-agent robots.txt; config-driven PostHog + Umami analytics scaffold
- ADRs and engineering docs under docs/

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 17:40:46 -04:00

1.4 KiB

ADR-0002: Page copy in Astro Content Collections (Markdown)

Status: Accepted — 2026-07-15

Context

Body copy currently lives inside .ts files (src/data/services.ts, src/data/focusAreas.ts) as quoted string properties — painful to edit, no spellcheck/preview, and prose is trapped in code. Separately, the rebuild paraphrased much of the live-site copy, and Phase 2 requires restoring exact copy (see docs/parity-checklist.md). Doing both at once avoids a double migration.

Decision

Move prose-heavy page copy out of .ts and into Astro Content Collections as Markdown, with typed frontmatter for structured/SEO fields. Split of responsibility:

  • Prose (service/focus/about body, insights) → Markdown body rendered through a shared layout.
  • Structured/visual data (metrics grid, nav, service icon+blurb cards, CTAs) → typed frontmatter or kept in .ts where it drives layout/components.

Exact-copy restoration (Phase 2) lands directly in this format, not into the old .ts shape.

Consequences

  • Editing copy no longer means editing code; enables an eventual owner-editing workflow.
  • Consistent rendering/flow via one styled layout (reduces, not increases, formatting risk).
  • Requires content collections for services, focusAreas, and standalone pages, plus refactoring the [slug] routes to read from collections.
  • Pairs with ADR-0003 (the collection schema encodes SEO rules).