For agency partners / White-label builds

Sites that move the way the pitch promised.

Every animation on this page is hand-written code in a single file. No page builder, no theme, no plugins, nothing loaded from anywhere else. Scroll — the page is the whole pitch.

Scroll

Elementor is the right call for most of the work you do. Fast, familiar, and the client can edit it. I'm not here to replace it. I'm here for the other twenty percent — the pitch where the brand deserves motion, where the builder hits its ceiling, and where you end up talking a great idea down to fit the tool. That work, designed and built properly, under your name.

01 / What custom unlocks

Six things a builder can't do, or can't do at sixty frames a second.

01

Scroll-driven storytelling

The page reveals itself as the visitor moves. Sections pin, content scrubs frame-by-frame against scroll position, chapters hand off to each other. It turns a landing page into a narrative instead of a stack of blocks.

02

WebGL & shaders

Real-time graphics running on the GPU — liquid distortion on imagery, generative backgrounds, particle fields, 3D product views a visitor can spin. This is the layer that makes a site look expensive.

03

Physics & spring motion

Elements with weight. Drag with momentum, springs that overshoot and settle, cursor-reactive magnetism. It's the difference between a site that animates and a site that feels like a product.

04

Bespoke type animation

Headlines that mask in line by line, characters that stagger and scramble, type that fills with colour as it's read. Typography carries most of a brand's personality — it deserves more than a fade-in.

05

Seamless page transitions

No white flash between pages. Content morphs, imagery carries across, the URL changes underneath. The site stops feeling like a set of documents and starts feeling like an app.

06
60fps · live, right now

All of it, on a cheap Android

The reason builders cap out isn't imagination, it's budget — every effect costs kilobytes and main-thread time. Written by hand, the effects are cheap and the page still loads in under a second on 4G.

02 / Live, not screenshots

Poke at these. Every one is running right now, in this file.

Hover

Magnetic pull

Buttons that lean toward the cursor before you reach them. Small thing, big lift on perceived quality — and it measurably improves click-through on primary CTAs.

Hover
DECRYPTING

Text scramble

Characters resolve out of noise. Works for stat reveals, rotating value props, and loading states that don't look like loading states.

Move cursor

WebGL shader field

A fragment shader on the GPU, reacting to the pointer. Same technique drives liquid image hovers, generative brand backdrops, and 3D product configurators.

Hover
/ 001

3D tilt & light

Real perspective transforms with a light source tracking the cursor. Good for pricing cards, product shots, team grids — anywhere a flat card is doing heavy lifting.

On scroll

SVG line drawing

Vector paths drawn stroke-by-stroke as they enter view. Logos that build themselves, charts that grow, illustrated diagrams that explain as you scroll.

Drag me
Throw it

Spring physics

Grab it and let go. Velocity, damping, and overshoot calculated per frame — not a canned easing curve. This is what makes interfaces feel physical.

Click add
0
Aeron Wool Throw
₹ 4,850

Add to cart, without the reload

The item flies to the bag, the count bumps, the button confirms — all in place. Stores that reload the page on every add lose people at exactly the moment they'd decided to buy.

Pick a colour
Amethyst

Instant variant switching

Colour, size and finish change on the spot with the new option washing across the product. No reload, no flash of white, no losing your scroll position half way down a product page.

Drag to spin

360° product view

Shoppers turn the product over the way they would in a shop. It's the single best answer to "I can't tell what it actually looks like" — the objection that drives most returns.

Tap a filter

Filter & reflow

The catalogue rearranges itself instead of blanking and redrawing. Shoppers keep track of what moved where, so they filter more and bounce less on category pages.

Click a tile
Click to expand

Grid to product page

The card doesn't disappear and reload — it grows into the product page carrying its image with it. This is the difference between a store that feels like an app and one that feels like paperwork.

Move cursor

Liquid image hover

The image is torn on the GPU as the cursor passes — ripple plus chromatic split on the RGB channels. The most-requested effect for lookbooks, portfolio grids and hero imagery.

00% scrolled
Sphere
03 / Scroll as a timeline

The scroll bar becomes the playhead

Two thousand points, rebuilt every frame. Nothing is on a timer — your position on the page drives every coordinate, colour and rotation directly.

Scroll up and it plays backwards

Because the animation is a function of scroll, not a sequence that fires once. Visitors stay in control, which is why it never feels gimmicky.

One object, four states

The same element carries the whole section instead of six stacked blocks. Fewer assets, less scrolling, more attention on the thing you're actually selling.

This is how product launches get made

It's the technique behind almost every flagship product page you've admired — and it is completely out of reach in a page builder.

04 / The unglamorous argument

The part that survives the client's procurement call.

Page weightLower is better
Builder
Coded
12× lighter
HTTP requestsLower is better
Builder
Coded
10× fewer
Lighthouse performanceMobile · higher is better
Builder
Coded
+52 points
Largest Contentful PaintCore Web Vital · lower is better
Builder
Coded
Passes CWV
Plugins to keep patchedSecurity surface
Builder
Coded
Nothing to patch

Representative figures from real audits of plugin-heavy WordPress builds — illustrative, not a guarantee.

Want the real numbers on a client site?

Send me any live URL. I'll audit it and send back a performance report as a white-labelled PDF you can put your own logo on and forward to the client. Free, no strings, and it usually starts a conversation about a rebuild on its own.

05 / How we'd work

White-label. Your client never hears my name.

01 — Brief

You send references

Sites you admire, the client's vision, and the deadline. Nothing needs designing on your side — that's my half of the job. Put me on the client call if it's easier.

02 — Design

Concepts, then a fixed price

You see direction before a line of code exists. One number, one date, in writing. No hourly creep, no surprise change orders landing on your margin.

03 — Build

Staging link from day three

Updated daily. You and your client comment on it like a Figma file. Nothing gets revealed at the end as a surprise.

04 — Handover

Your repo, your invoice

Code, docs, CMS access and deploy pipeline handed to you. You bill your rate. I'm a line item on your side of the ledger, nowhere on theirs.

06 / The obvious questions

Answered before you have to ask them.

They still can. I ship with a proper headless CMS — Sanity, Payload or Storyblok — where the editing screen is a clean form: headline, body, image, publish. Cleaner than Elementor, and there's no way for a client to drag the layout apart at 11pm and call you about it. You hold the admin, branded as yours.

A marketing site is three to five weeks from final design. That's the same ballpark as a heavy builder project once you count plugin wrangling, cross-browser QA and the week you lose when two plugins start fighting. The difference is you get a date up front and I hit it.

It isn't for every client, and I'd rather say that plainly. It's for the ones you're already quoting at the top of your range, the rebrands where the site has to carry the new positioning, and the pitches you lost because the work looked like everyone else's. Custom is what lets you quote higher and actually defend the number in the room.

Largely nobody, which is the point. It deploys as static files to a CDN — no PHP version to keep current, no plugin updates, no vulnerable login page to brute-force. No 3am "we've been hacked" call. If you want me on standby for changes, there's a light monthly retainer; most clients don't need one.

Fair question, and you should ask it of any partner. You get the repository, commented code, a written handover doc, and a standard framework any competent front-end dev can pick up on day one. No proprietary anything. No lock-in to me — which is also the best reason to believe I'll be worth keeping.

No. Design is half of what I do. Send references, the brands your client admires, and a sense of the vision — I'll design it and build it, and you'll see the direction before any code is written. Nobody on your side needs to draw anything. If you'd rather hand me a finished Figma, that works too, and I'll build it exactly as drawn instead of talking it down to fit a tool.

Motion for its own sake is a liability — it slows the page and gets in the way. Used properly it does three jobs: directs attention to the next thing, explains something a static image can't, and signals that the brand is serious. Everything on this page respects reduced-motion settings, works on keyboard, and degrades to a fast static page if scripts fail. I'll happily cut an effect if it can't earn its kilobytes.

07 / Next step

Send me the next brief that scares your build team.

Or just send me a live client site and I'll audit it and send back the real performance numbers. Costs you nothing and you keep the report.