The marketing site and live catalog for QuenchWorks, a free, 0-CVE hardened catalog of container images and signed Helm charts. It's the front door at quench-works.com, and the browsable index of every image and chart we ship.
Built with Astro 5 · Tailwind CSS v4 · TypeScript, managed with pnpm, on Node 26 (see .nvmrc). Monochrome by design (ink/paper), Inter + JetBrains Mono. The theme is enforced through design tokens, not hardcoded hex.
pnpm install
pnpm dev # http://localhost:4321 (runs the catalog sync first)
pnpm check # astro + TypeScript checks
pnpm build # static output to dist/ (runs the catalog sync first)
pnpm preview # preview the production buildpnpm dev and pnpm build both run the catalog sync automatically (predev / prebuild), so the /images and /charts pages always reflect the real catalog.
scripts/sync-catalog.mjs is the bridge between the catalog repos and the site. It reads the source of truth out of quenchworks/images (catalog.yaml) and quenchworks/charts, then writes src/data/images.json and src/data/charts.json. The catalog pages render from those files, so counts, versions, digests, and license flags are never hand-maintained.
pnpm sync # node scripts/sync-catalog.mjssrc/
data/ images.json + charts.json (generated by sync-catalog.mjs)
pages/
index.astro the hero / landing page
images/ the hardened-image catalog
charts/ the signed-chart catalog
docs/ how-to-verify and reference docs
roadmap.astro what's shipped and what's next
security.astro the security model and verification steps
about.astro · how-it-works.astro
layouts/ · components/ · styles/
scripts/sync-catalog.mjs pulls catalog data from the images + charts repos
public/ brand assets, favicon
Color and type come from the design tokens in src/styles/global.css (@theme). Don't hardcode hex in components; use the ink / graphite / line / ash / paper utilities so the whole site stays consistent. Monochrome only, no color accent.
Static build (pnpm build → dist/), deployed to Cloudflare Pages via the Git integration (Cloudflare builds on push, no GitHub Actions workflow needed):
- Build command:
pnpm build - Build output directory:
dist - Framework preset: Astro
- Node version:
26(setNODE_VERSION=26in the Pages env, matching.nvmrc) - Custom domain:
quench-works.com
