← Blog

Building this portfolio

Why I chose Astro, how I approached the design, and what I'd change next time.

I’ve rebuilt my portfolio more times than I care to admit. This version is the one I’m actually keeping.

Why Astro

I’m a mobile developer who also does backend work. My frontend instinct is to reach for something I know: a React SPA, maybe with Next.js. But a portfolio doesn’t need a SPA. It needs fast HTML, a little JavaScript, and ideally no build complexity I’ll forget about in six months.

Astro ships zero JS by default and adds it only where you explicitly ask for it. The content collections API handles my blog posts in Markdown and MDX. The i18n routing is built in. It felt like the right tool for the job rather than the familiar one.

The design

I wanted something that reads like a document rather than a product page. No hero sections with gradient backgrounds. No animated counters. Just typography, whitespace, and hierarchy.

The reference point was editorial design, the kind you see in good longform journalism. Section labels as small uppercase text. Numbers as decorative anchors. Content that breathes.

The typewriter effect on the homepage is the only real flourish. It felt right because it says something true about how I work: I’m hard to categorize. The scramble animation running under it reinforces that.

What I’d change

The experience section is placeholder content. Filling it in properly is next.

The Spanish version (/es) is partially implemented. The translations are wired up but the blog isn’t localized yet. That’s a deliberate deferral; I wanted to ship the English version first and not let perfect be the enemy of done.

I’d also like to add an RSS feed for the blog and proper OG images for each post. Those are the next two things on the list.

On using AI

I used Claude throughout this project, not to write the site for me, but as a thinking partner. When I wasn’t sure about a layout decision, I’d talk it through. When I hit a tricky CSS behavior or an Astro edge case, I’d ask. It’s closer to pair programming than code generation: I still made every call, but having something to reason out loud with sped things up considerably.

I’m a mobile and backend developer, so the frontend decisions here were the least natural to me. Claude helped me move faster in unfamiliar territory without losing ownership of the result.

The stack

  • Astro 5: static site generator
  • MDX: blog posts
  • Geist: typeface
  • Tailwind: utility classes where needed
  • Preact: for any interactive islands (currently none in use)

Deployed to Netlify. Zero configuration, fast edge CDN, free tier covers everything I need.

A closing thought

Programming has changed more in the last two years than in the previous ten. Not because AI writes code (it does, and sometimes well), but because the bottleneck has shifted. The hard part used to be knowing the syntax, remembering the API, or finding the right Stack Overflow answer. Now those things are nearly free. The hard part is knowing what to build, why it matters, and whether the output is actually correct.

That raises the bar, not lowers it. You still need to understand what you’re doing. You just spend less time on the parts that didn’t require understanding in the first place.