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

31 lines
1.4 KiB
Markdown

# 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).