Bibek Basnet
2 min read· July 28, 2026

Why I Rebuilt My Portfolio From Scratch (No Templates, No Shortcuts)

Why I Rebuilt My Portfolio From Scratch (No Templates, No Shortcuts)

Most developer portfolios look the same. A hero section with a gradient. A grid of project cards. A skills section with progress bars nobody trusts. Ship it, move on, never touch it again.

I didn't want that. I wanted a site that actually demonstrated what I can build - not just told people about it.

Starting from nothing, on purpose

No page builders. No themes. No starter templates from GitHub. Every section of this site - the hero, the services catalog, the work showcase, even this blog you're reading right now - started as a blank file.

That wasn't stubbornness. It was the only way to build something that didn't feel like every other portfolio I'd seen. Templates are a shortcut clients can feel, even if they can't name it. The same is true of a portfolio meant to convince someone to hire you.

Building a real animation system, not just effects

Early on, I made a decision that shaped everything after it: animations wouldn't be scattered across components with random delay values guessed into place. I built a shared master timeline - one clock that every intro animation plugs into, so the logo draw-in, the hero name reveal, and the paragraph cascade all fire in a coordinated sequence instead of racing each other.

Below the fold, everything uses scroll-triggered reveals built on the same handful of patterns: IntersectionObserver for state, GSAP for the actual motion. That consistency is what makes a site feel considered instead of assembled.

The parts that didn't work the first time

Not everything landed immediately. An early version of my Services section used a full pinned-scroll hijack with a ghost-number system and an infinite marquee band - it looked impressive in isolation and broke the moment I tested it on a narrower viewport. I rebuilt it as a clean icon grid with real 3D tilt and a cursor-tracked glow instead. Simpler, and it actually held together.

The Work section went through a similar cycle - a sticky-image crossfade that finally worked cleanly, after an earlier version that hijacked scroll in a way that fought the browser instead of working with it.

The lesson, more than once: the fanciest possible effect isn't the goal. The effect that actually works, on every device, without fighting the user's scroll - that's the bar.

What's next

This blog is part of that same philosophy. No headless CMS, no third-party dashboard - a database-backed admin panel I built myself, with a live Markdown preview, drag-and-drop image uploads, and auth that only I can get past. I'm planning to write here regularly - build notes, technical decisions, things I got wrong before I got them right.

If you're building something and want a second opinion on scope, timeline, or whether an idea is actually worth building - let's talk.