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>
1.4 KiB
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
.tswhere 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 standalonepages, plus refactoring the[slug]routes to read from collections. - Pairs with ADR-0003 (the collection schema encodes SEO rules).