Why Build Your Own Portfolio Site?

There's no shortage of platforms — LinkedIn, GitHub, Behance — that let you showcase your work. So why build a custom portfolio site from scratch? For me, the answer was simple: the site is part of the portfolio. How you design it, what technologies you choose, and how well it performs all say something about how you work.

It's also a project with no spec, no ticket, and no deadline. Just you, a blank canvas, and every decision up to you. That's both liberating and revealing.

The Stack I Chose — and Why

After considering several options, I landed on a straightforward setup:

  • Framework: Next.js — server-side rendering, great performance defaults, and React familiarity
  • Styling: Tailwind CSS — utility-first, fast to iterate, no context switching
  • Hosting: Vercel — zero-config deployment, previews for every branch
  • Content: Markdown files for articles — no CMS overhead, version-controlled

The goal was a stack I could move fast in, that produced a performant result without significant infrastructure management.

Decisions That Paid Off

Content-First Design

Instead of designing a beautiful shell and filling it with placeholder content, I wrote real content first — my bio, project descriptions, article drafts — and designed around it. This sounds obvious, but most developers (myself included, in the past) do it the other way and end up with a design that doesn't actually fit the real content.

Keeping It Simple

The temptation to add animations, complex filtering, dark mode toggles, and interactive widgets was real. I added almost none of it. A fast-loading, easy-to-read site communicates professionalism better than a flashy one that takes three seconds to load.

Mistakes I Made

Over-Engineering the Data Layer

I spent nearly a week building a tagging system and custom filtering logic that I ended up simplifying dramatically. I should have shipped the simple version first and only added complexity when there was a real need for it.

Perfectionism in Public

I kept the site private for too long waiting for it to be "done." There is no done. I eventually set a hard deadline — ship by a specific date, polish later. The version I shipped was imperfect. Nobody cared except me. Feedback from real visitors was far more useful than another week of solo iteration.

What I'd Do Differently

  1. Ship earlier. A live imperfect site beats a perfect site that doesn't exist yet.
  2. Invest in analytics from day one. Knowing what people actually read changes what you write next.
  3. Write articles before launch. An empty blog is less compelling than one with five solid posts.

The Ongoing Lesson

A personal site is never finished — it grows as you do. The best portfolio sites feel alive: updated regularly, reflecting current interests and current work. Treat it as a living document, not a one-time project, and it will serve you well for years.