Skip to content

Building this site with Astro, Keystatic, and Cloudflare

A short tour of the stack behind this site — Markdoc content collections, Git-based editing with Keystatic, and static-first hosting on Cloudflare Workers.

  • Astro
  • Keystatic
  • Cloudflare

Every personal site eventually turns into a tour of its own stack. This one is no exception, so here is what runs underneath.

The stack

The site is built with Astro and deploys to Cloudflare Workers. Content lives in the repository and is edited through Keystatic, so every change is a Git commit — no database, no CMS server to maintain.

  • Astro for routing, content collections, and image optimization
  • Markdoc for long-form content
  • Keystatic for the editing UI
  • Cloudflare Workers for hosting and the admin API

How content flows

A post is a single .mdoc file with YAML frontmatter and a Markdoc body:

---
title: Building this site
pubDate: 2026-09-15
---

The body goes here.

Keystatic reads and writes those files through the GitHub API. When a change lands on main, Cloudflare's Workers Builds pipeline rebuilds and redeploys the site.

Static by default, dynamic only where it matters.

What's next

The design still needs a proper pass, and the contact form needs an endpoint. Both are tracked as follow-ups — the content model and the plumbing are already in place.