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
- Ship earlier. A live imperfect site beats a perfect site that doesn't exist yet.
- Invest in analytics from day one. Knowing what people actually read changes what you write next.
- 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.