Portrait of Raji Farouq Adewunmi

Atelier Drop

Storefront clone · static HTML

A password-gated Shopify streetwear store rebuilt page by page in plain HTML, CSS and vanilla JavaScript, then measured against the live build at 1440 and 390 pixels until the differences closed.

Open the demo 18 pages · no framework

What it is

The store runs the Horizon theme: a sticky two-row header, a scene rail of garments hanging from a catenary, a runway with six looks pinned to a wall, a shelf wall of shoes, a shader-driven slider and a bag drawer.

Rebuilding it is a test of whether an interface can be reproduced from its output alone — no theme files, no design handoff, just the rendered page and a ruler. The result is 18 static pages that open from any static server. Nothing is fetched from the store: fonts, photography and video sit in the folder, and the bag is localStorage.

The hard part

Geometry that only exists at runtime. The rail is a catenary sampled into a path, and each garment hangs at its own angle. Instead of eyeballing it, the build reads the live path's points and replays them under the same viewBox, so the curve, the tag anchors and the hover-widen transform agree at both widths.

Pages that scroll a div, not the window. The theme puts the scroll on .page-wrapper and hides the body overflow. Every scroll-linked measurement — the header shrink, the runway pins, the story progress — had to target the container instead of window, or the page silently stops responding to scroll.

Differences that are not bugs. Four templates ship no <h1>, five products share the same SEO title, and the home <h1> is the password page's hidden heading. "Fixing" them would have broken fidelity, so the clone reproduces them and records why in its README.

Evidence

The runway page: a full-height look photograph beside a panel listing the pieces in the look, each with its price.
The runway template: six looks, each pinning its own product list, with an add-full-look bundle at the foot.

Stack

HTML, CSS custom properties and vanilla JavaScript, one stylesheet and one module per section. Playwright and Pillow for measurement, screenshot diffing and image work. No framework, no bundler, no runtime dependency.

Limits

This is a recreation, not a product. The brand, photography and copy belong to the original store, and the demo is published noindex as an engineering study. There is no checkout, account, order or backend — the bag lives in the browser and "check out" does nothing.

One section the theme renders with WebGL is reproduced with a CSS cross-fade: it matches the still frames but not the shader, and a handful of hidden accessibility layers differ from the store by a few pixels.