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.