A hand-built studio site in a Swiss "lacquer & stone" style: warm stone paper, lacquer-red accents, thin uppercase type and fine film grain. Every section reacts as you scroll: Halftone portrait that reveals under your cursor
Signature that draws itself, and a manifesto that lights up word by word
The boutique: five project videos with a working till. Reach the end and the receipt prints PAID
3D paper crumple: the receipt folds into a real 3D ball and drops into the page with physics
"A Day in Code": an original stick-figure film drawn in code. The ball lands inside it and gets a bicycle kick
Generative synth music and cartoon sound effects, all made live in the browser
AI-style assistant in a glowing WebGL orb, available in six languages
Built with: Vanilla JavaScript · Vite · GSAP + ScrollTrigger · Lenis smooth scroll · Three.js (3D crumple and cart) · Matter.js (physics) · WebGL shaders · Web Audio API · Web Workers · Vercel
The 3D crumple runs in a Web Worker and only the video on screen plays, so it stays smooth at 60fps.
I wanted to create something that felt like a real fashion brand had already existed for years.
Not just a homepage. Not a collection of pretty screens. An actual store, with its own identity, imagery, products, interactions and all the small details that make a website feel complete.
That idea became NARROWFORM.
I created the brand and name, developed the art direction, produced the fashion and product imagery, designed the entire interface and shopping experience, and built the website myself.
I wanted the concept to hold up beyond the first impression, so I built the experience all the way through:
Product discovery
Product pages
Cart interactions
Checkout
Simulated payment
Cookie consent
Responsive layouts
Mobile interactions
And the smaller interface states throughout the experience
The imagery was created specifically for NARROWFORM using generative tools, then refined and directed to fit the same visual language as the website.
The result is a complete fashion e-commerce concept that you can actually explore.
This is probably the most involved project I've made so far, because I wasn't trying to design a website around an existing brand.
I wanted to create the brand, then build the website that belonged to it.