Skip to content
AR
All projects
Web ExperienceDesign + Development

Interactive Portfolio

A high-performance Next.js portfolio featuring 3D WebGL visualisations, dynamic theming, and sub-100 Lighthouse scores across all routes.

Next.js 14TypeScriptThree.jsCSS Custom PropertiesApp Router

The brief, unpacked

This portfolio site was designed to showcase engineering work through an immersive, technically impressive interface while maintaining exceptional performance. Built with Next.js 14 App Router and TypeScript, the site features dynamic accent theming via CSS custom properties, 3D scene rendering with Three.js for the hero background, and a fully responsive design system. Every page achieves 95+ Lighthouse scores through aggressive code-splitting, optimised font loading with next/font, and efficient bundle composition.

Lighthouse Performance
98
Bundle JS (shared)
86.9 kB
Pages with 95+ Score
All

The work

Challenges, and how they fell

  1. 01

    3D performance on mid-range devices

    The Three.js hero scene needed to run at 60fps on a wide range of devices, including mobile and mid-range laptops.

    Solution

    Implemented adaptive quality scaling based on device capability detection. The renderer uses a low-poly fallback for mobile devices, throttles frame rate to 30fps on battery power, and dynamically reduces particle count when frame drops are detected via performance observers.

  2. 02

    Zero-layout-shift image loading

    Project gallery images with unknown aspect ratios needed to load without causing cumulative layout shift.

    Solution

    Built a custom image component that extracts dimensions from the blob on the server side, embeds aspect-ratio in the markup, and uses a CSS-only blur-up placeholder technique with WebP progressive rendering for smooth transitions.

Gallery

Interactive portfolio — home page
Home — WebGL hero
Interactive portfolio — about page
About
Interactive portfolio — capabilities section
Capabilities

Next project

Atlas Club

Continue