← Back to blog

Building This Portfolio with Astro

Building This Portfolio with Astro

I wanted a personal site that was fast, minimal, and easy to maintain. After evaluating several frameworks, I landed on Astro 5 — and I’m glad I did.

Why Astro?

Astro ships zero JavaScript by default. For a content-heavy site like this, that’s a huge win. Every page is pre-rendered to static HTML at build time, which means:

  • Instant page loads — no framework runtime to download or parse
  • Perfect Lighthouse scores — no JS bundle means no main thread blocking
  • Simple hosting — deploy to any CDN for free

The stack

  • Astro 5 — static site generator with content collections
  • Tailwind CSS v4 — utility-first CSS with the new CSS-first config
  • MDX — Markdown with embedded components for blog posts
  • Cloudflare Pages — free hosting with global CDN

Content management

Instead of a database, all content lives as Markdown files in the repo. Blog posts go in src/content/blog/, projects in src/content/works/. Git is my CMS — every commit is a content update.

This means I can write posts in my editor, preview locally, and deploy with a git push. No admin panels, no authentication, no complexity.

Design

The design is intentionally minimal — warm cream background, system fonts for instant text rendering, and a single orange accent color for links. The goal was to feel like a personal letter, not a SaaS landing page.