AI & Immersive

Why I Built My Own Portfolio's Hero in Three.js, Not a Template

Adnan Abdu RahmanAdnan Abdu Rahman5 min read
Why I Built My Own Portfolio's Hero in Three.js, Not a Template

Most portfolio hero sections are a headline, a photo and a button. Mine is a real-time 3D scene built with Three.js — a rotating metallic ring, a parallaxing portrait plane and a locally rendered typographic title, all responding to the cursor. That's a strange amount of effort for a hero section, and I think it's exactly the right amount, for this specific site.

A portfolio is the one place the medium is the message

On a client project, the website has to serve the client's business first — a real estate group's site shouldn't be a personal art project. But a developer's own portfolio is different: it's the one place where showing genuine technical range, not just describing it, is actually the point. A working 3D scene says more about what I can build than a paragraph claiming I know Three.js.

It's the same skill behind a client project, not a separate one

The techniques in this hero — a navigable, performant real-time scene with layered depth and cursor interaction — are the same fundamentals behind the NH Collection 3D Resort Explorer, built to let prospective guests explore a resort masterplan directly in the browser. One is a portfolio flourish, the other is a client deliverable; the underlying engineering is the same.

Performance discipline, not just visual flourish

A 3D hero that tanks page speed defeats its own purpose on a site whose other stated goal is ranking well in search. The scene is built to cap pixel ratio, pause off-screen and in hidden tabs, respect reduced-motion preferences, and fall back cleanly to a static composition if WebGL can't start — the same performance discipline I'd apply to any client's site, applied here first.

What it's actually for

Not decoration — proof. If you're evaluating whether I can build genuinely interactive, well-engineered web experiences and not just template sites, this page is the demo, running live on my own portfolio right now.