← all projects
Web · Self-hosted · Cloudflare

This Site

The portfolio you're reading now — designed and built by hand, then self-hosted on my homelab behind a Cloudflare Tunnel. No cloud bill, no inbound ports, no framework bloat.

Why build it this way

I wanted a portfolio that demonstrates the work rather than just describing it — an interactive 3D hero, a command palette, a live terminal, and per-project architecture diagrams — while staying fast and dependency-light. And I wanted to own the whole stack end to end, including where it runs.

Tech stack

Front-end

HTML5CSS3Vanilla JSThree.js (WebGL)

Interaction

Command palette (⌘K)Canvas animationsIntersectionObserver

Design

GlassmorphismCustom type scaleReduced-motion a11y

Infra & hosting

Homelab NASnginx (static)Cloudflare TunnelCloudflare CDN + WAF
Deliberately no heavy framework: a static build keeps it fast, portable, and trivial to self-host securely. Total payload is a few hundred KB, cached at Cloudflare's edge.

How it's hosted

The site is a static bundle served by a lightweight nginx instance on a homelab NAS. Instead of opening ports on my home router, a Cloudflare Tunnel makes an outbound-only connection to Cloudflare's edge — so the origin has zero inbound exposure. Cloudflare terminates TLS, caches globally, and provides WAF and DDoS protection in front of the domain.

Visitor Cloudflare edge CF Tunnel Docker · nginx
Tap a layer to explore →

What it shows

Next project → Starship