Content Platform

State of the Art

The quantitative picture. Every claim traced to a source. What we build, what we assert, and where the gaps are.

Key Metrics

These are the numbers that define the pipeline's health. Some are measured from production data. Others are asserted from code analysis. The distinction matters.

5 pipeline stages

LINT → SCAFFOLD → ENRICH → STYLE → SNAPSHOT. Each stage is independent, testable, and produces a diffable artifact on disk.

Zero runtime dependencies

Output is a single .html file with all CSS embedded. No JavaScript, no CDN, no build tools required at runtime.

12 / 12 tests passing

Full integration test suite covers all 5 pipeline stages. Status — measured. Threshold — green.

1 theme, infinite pages

The ink theme applies to any content structure via semantic roles. Same CSS, any content, always correct.

Convention over config

Drop a YAML file in the project directory. Navigation is auto-injected. Output paths are derived. Nothing to wire.

Cloudflare Pages deploy

One tool call deploys every page as a single project. MD5-based deduplication — only changed files are uploaded.

Pipeline Architecture

Each stage of the pipeline is a pure function with a defined input and output artifact:

  1. LINT — Parse YAML into a typed PageSchema. Validate required fields, section types, and semantic axes.
  2. SCAFFOLD — Walk the schema and build a classless RenderNode tree. Each component has a dedicated .data.ts and .scaffold.ts.
  3. ENRICH — Resolve semantic roles (hero-heading, btn-primary, feature-card) and layout hints (layout-3col, width-narrow) into CSS class names.
  4. STYLE — Generate theme CSS and serialize the AnnotatedNode tree to HTML. Inline everything into a single <style> block.
  5. SNAPSHOT — Capture a full-page screenshot using headless Chromium for visual regression testing.

Every stage writes its output to disk. Intermediate artifacts are inspectable, diffable, and independently reproducible.