devlog 2 min read

The Stack Behind This Site

A look at the tech choices behind ddox.cc — Astro, Tailwind CSS 4, MDX, and why static-first still wins.

#astro #tailwind #web #meta

After 20 years of building complex distributed systems, I wanted my personal site to be the opposite: simple, fast, and zero-maintenance.

Why Astro?

I wanted a framework that:

  • Ships zero JavaScript by default
  • Has first-class content collections with type safety
  • Supports MDX for rich blog posts
  • Is fast — both in dev and production

Astro checks every box. The island architecture means I only ship JS where I actually need interactivity (like the particle canvas on the homepage).

The Warm Terminal Theme

The design is dark-first with warm accents. The color palette:

--bg-primary: #09090b;       /* pure dark, neutral */
--accent-gold: #d4a04a;      /* warm gold primary */
--accent-sage: #6aaf8d;      /* sage green accents */
--accent-warm: #cf7b5f;      /* terracotta highlights */

The palette avoids the overused blue/purple gradients that dominate developer portfolios. Instead, warm gold and sage tones create a distinctive, refined feel that stands apart.

Tailwind CSS 4

Tailwind 4 is a game changer. The new CSS-first configuration means no more tailwind.config.js. Custom properties integrate directly with the @theme directive:

@import 'tailwindcss';

@theme {
  --color-bg-primary: #09090b;
  --color-accent-gold: #d4a04a;
}

Content Pipeline

Blog posts are written in MDX with frontmatter validation via Zod schemas. Astro’s content collections give me:

  • Type-safe queries
  • Automatic slug generation
  • Schema validation at build time
  • RSS feed generation

Deployment

The site builds to static HTML and deploys to Vercel. Build times are under 5 seconds, and the output is a handful of HTML files with minimal CSS.


Ship something. Iterate. That’s the whole strategy.