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>
31 lines
1.4 KiB
Markdown
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).
|