Skip to content
  • 2023
  • Front-End Engineer
  • Phantom Labs (studio)

Phantom Labs

Overview

A Studio Site Built Without Library Defaults

Built for Phantom Labs in 2023. The site shipped, lived for about six months, then the studio moved on from it. Including it here because it's still the best thing I've made.

  • Three.js
  • GLSL
  • Custom Shaders
  • WebGL
  • Motion Systems
  • Interaction Design
01

The Brief

A studio site that had to look like the work

Phantom Labs wanted a studio site that looked like the work, not a wrapper around it. The brief was open: build it however you want. So I did — every shader, every transition written from scratch, no drei drop-ins, no off-the-shelf scroll lib.

And then the studio moved on

The site shipped and lived for about six months before the studio moved in a different direction. The work is still mine.

Hand-Authored Primitives

02

The build

Hand-authored, top to bottom

No drei materials. No bolted-on post-processing. No scroll lib carrying the load. I wrote every shader to the comps and tuned every interaction by hand. That's why the whole thing reads as one piece — everything was made for the part next to it.

Hero — custom shader, hand-tuned motion

The motion

Every transition tuned by hand. No library shortcuts.

03

In motion

Section transition — typography meets material
Detail interaction — built, not borrowed
04

In stills

Phantom Labs hero state
Hero state — design and material as one
Phantom Labs work section
Phantom Labs work section
Phantom Labs case study layout
Phantom Labs case study layout
Phantom Labs case study layout
05

Six months live, still mine

Still my best build

Site shipped, lived for about six months, then the studio moved on. Custom shaders, motion by hand, no library defaults — everything I've made since is downstream of this one.

Credits

2023. Front-End Engineer for Phantom Labs (studio). Delivered: Web, WebGL, Motion, Interaction.

Next Project

Mission Bell

GSAP Page Transitions and a CMS the Shop Actually Owns

Continue →