SOME DOSE
Ecommerce2024A fully custom fashion storefront for an indie designer who needed a site that matched the brand — not a Shopify template that fights it.
View live site →

The Brief
This one wasn't a client project. I built it for my own brand. I'd been making clothes and needed somewhere to sell them — somewhere that felt considered, not assembled. Shopify exists. Squarespace exists. But every theme I looked at read as a template: the same grid, the same font weight, the same checkout flow as ten thousand other stores.
So I built it from scratch. Custom cart, custom product pages, custom everything — designed around what the brand needed, not around what a theme allowed.
The Constraint
For an indie fashion brand, the site IS the brand. A generic storefront contradicts the product before a visitor reads a single word. The design had to feel as deliberate as the clothes — which meant no theme, no shortcut, and no component that existed because it was easy to add.
At the same time, it needed to actually sell things. Real Stripe checkout, real cart state, real order flow — not a portfolio demo that falls over when someone tries to buy.
Key Decisions
Custom build over Shopify
Shopify themes enforce a visual grammar. Every override is a fight — custom liquid, section limits, checkout restrictions. Starting from Next.js meant the design was never constrained by what a theme permitted. The site looks the way it does because nothing was forcing it to look different.
Stripe Hosted Checkout, not a card form
Building a custom card form means owning PCI compliance, handling card validation errors, and maintaining it indefinitely. Stripe Hosted Checkout hands all of that to Stripe. The checkout flow is still seamless — but I didn't spend a week building something Stripe already built better.
Zustand for cart state
Cart state lives in the browser, persists across navigation, and requires no account before checkout. Visitors can add to cart and check out without ever creating a profile. That friction point kills conversions on small independent stores — removing it was non-negotiable.
Framer Motion for product transitions
Fashion browsing should feel deliberate. Instant page swaps read as functional, not considered. Subtle transitions — product image reveals, hover states that respond — make the act of looking at clothes feel like the experience the brand is selling.
Image-first layout on every product page
The photography is the product. Template grids shrink images to fit a column, stack them with titles and prices, and reduce everything to the same visual weight. Custom layout lets the images breathe — full-width, unhurried, with copy that supports rather than competes.
The Outcome
Live and trading.
Built for my own brand. Custom from cart to checkout.
SOME DOSE is live at somedose.com and taking real orders through Stripe. The cart, the checkout, the product pages, the animations — all custom. No template was used at any layer of the stack.
This is what custom-built actually means: the design serves the product, not the other way around. When you need that — when the brand IS the product — there's no substitute for building it yourself.
Built With
Building something like this?
Custom ecommerce, brand-first storefronts, or anything that doesn't fit a template — get a quote and we'll scope it together.
Get a quote →