Hello, world: launching this blog on Astro + Cloudflare

Why Astro instead of WordPress

After years of running WordPress sites at scale, I wanted something that would let me write quickly without the operational tax. Astro hits the sweet spot: markdown files, git-based publishing, zero JavaScript on the wire by default, and hosting that costs literally nothing.

What you’ll find here

Notes on SEO, technical content workflows, and whatever else is on my mind.

The stack

  • Astro 5 with content collections
  • Cloudflare Pages for hosting (free tier)
  • Decap CMS for browser-based editing when I don’t want to open VS Code
  • Tailwind for styling

All of this was scaffolded in about 30 minutes with Claude Code.

// What a content collection schema looks like
const blog = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()).default([]),
  }),
});

More posts coming soon.