case study2026

WhyClub

A streetwear label from India that sells oversized graphic tees in small drops. I built all of it, end to end. The brand, the product design, the storefront, and the backend that runs every order.

Role
Designer and builder
Scope
brand identity, art direction, UX and interaction design, design system, frontend, backend, webgl
  1. The shop on a phone: a two-column grid of tees with prices.

    ShopTwo to a row. The + on each card is quick add.

  2. Quick add open over the shop: Inner Child photos, the price, sizes with M picked, and Add to bag.

    Quick addPhotos, price and size, without leaving the shop.

  3. HomeOne drop per screen. Swipe for the next.

  4. The product page on a phone for the Please, I’m a Star tee.

    ProductPick a size, or open the size guide.

  5. The bag with one Please, I’m a Star tee, a free socks offer and the order summary.

    BagA free pair of socks, one tap to add.

A loud brand on a quiet store.

The drops are loud. Everything you shop from sits on plain neutrals.

  1. The product page on a phone for the Please, I’m a Star tee.

    The details rise over the tee

    On a product page the details come up as a sheet over the photo, so the tee stays on screen while you read.

  2. Every drop gets the whole screen

    A campaign photo per drop, with the tee’s name across it.

  3. The bag with one Please, I’m a Star tee, a free socks offer and the order summary.

    The bag, kept short

    Each piece on one line, the total under it, then checkout.

The shop on a phone: a two-column grid of tees with prices.
Quick add open over the shop: Inner Child photos, the price, sizes with M picked, and Add to bag.
The product page on a phone for the Please, I’m a Star tee.
The bag with one Please, I’m a Star tee, a free socks offer and the order summary.

The idea

Most shops are built by a lot of people. One person does the brand, another designs the store, someone else builds it, and someone else again wires up the orders. Every handover loses a little: a font gets swapped, an animation gets cut, a button stops feeling right.

I did all of it myself, so nothing got lost in between. WhyClub is a streetwear label, and I made every part of it: how it looks, how the store feels in your hand, and the system that takes an order from paid to delivered.

01The dock

One piece of navigation that changes shape.

Pill60 × 56

Further down the page.

Bar328 × 64

At the top of the page.

Account360 × 288

Opened from its tab.

More360 × 288

Opened from its tab.

Dark glass shows only on an iPhone in dark mode, so the dock sits with Safari’s toolbar.

Clothes get bought on phones, so navigation lives where your thumb already is: a dock at the bottom of the screen. It's one surface with three shapes. At the top of a page it's a bar of five. Scroll and it shrinks to a pill that slides left, out of the way of the buy button. Tap Shop, Account or More and the bar grows into a panel, with a Back at the top to fold it up again.

The shell is the only part that changes size. It moves on spring curves written as CSS linear() easings, so a tap halfway through a transition picks up from wherever the dock is instead of snapping back. Everything inside it only fades and moves. It has its own quiet sounds too: a soft tick for a tap, and a short breath when a panel opens and closes.

The idea of a row that becomes the menu, instead of opening one, comes from Danny Williams’ “A dock that unfolds”. I built WhyClub’s version around a store: panels with campaign photos, a pill that makes room to buy, and a real page behind every row.

The idea of a row that becomes the menu, instead of opening one, comes from Danny Williams’ “A dock that unfolds”. I built WhyClub’s version around a store: panels with campaign photos, a pill that makes room to buy, and a real page behind every row.

The real dock, running in this page. Pick a shape or tap it, and switch the glass.

02After you order

Every order gets a pass that changes as it ships.

Ordering is usually where a store goes quiet: a confirmation email and a tracking link. I wanted it to be the part people remember.

It prints in when you pay, then moves through You're in, All packed, On its way and It's home. Each stage has its own scene drawn live in WebGL: a bloom opening, a box getting taped, a route drawing itself to a pin.

The same hand-written shaders turn up around the store: riso-style badges for the beta pass, a dithered asterisk, and a 404 page where a prism splits the light.

You’re in.

Payment’s in and your pieces are set aside for you.

    The real drop pass, running here on a sample order. Move through the stages, switch between phone and desktop, or replay the print.

    03Behind the counter

    I built the half you don't see too.

    The backend takes the order, keeps the pass in step with the parcel, and gives me the tools I need to put out each release.

    Doing both halves meant the details survived. The sheet over the photo, the dock that opens into a menu, the pass that changes when your parcel ships: none of it had to be explained to anyone first. I just built it. I genuinely believe that's the biggest advantage of one person working across design and engineering.

    Details

    The parts nobody asks for.

    Most of the work was in things people only notice when they’re missing. A few of them, up close.

    Process

    How it got made.

    Real tees, generated models

    The tees are real. The people wearing them aren’t. Each photo starts from the actual tee, swapped onto a generated model, then the same model turns around for the back. The store says so in its footer and its terms.

    Claude sorted the finished photos onto the four tees and encoded them with ffmpeg. One batch went from 356 MB of PNGs to 5.3 MB of AVIF.

    1. The black Please, I’m a Star tee on white, front side.

      01The tee

    2. A model wearing the Please, I’m a Star tee in front of a weathered wall.

      02On a generated model

    3. The same model from behind, showing the star print on the back of the tee.

      03Turned around

    Built in a loop

    I built the store with Claude, in short loops like this one. Since late September 2026 that’s 98 sessions and 426 prompts.

    1. 01A referenceA link, a screen recording or a pin, pasted in with what I want from it.
    2. 02Versions side by sideClaude builds three to five versions behind a switcher. I pick one and the rest go.
    3. 03Notes on the pageI click an element on the running store and write the note right there, so feedback points at the exact thing.
    4. 04On a real phoneThe iOS Simulator first, then my iPhone. A push to main is the deploy, so nothing ships before that.

    What it runs on

    Storefront
    Astro on Cloudflare Workers, React islands, Tailwind
    Orders and sign-in
    Convex
    Payments
    Razorpay, cash on delivery included
    Shipping and email
    Shiprocket, Resend
    Motion and sound
    GSAP, Framer Motion, WebGL shaders, Web Audio