Demonstration build
Linden & Grey
Linden & Grey is a made-up business we built to demonstrate the work. The site is live and you can try it. The numbers shown on it are illustrative sample data.

The problem
Linden & Grey is a boutique that showed its collection as a lookbook with no way to buy, a visitor who wanted a piece had to message the shop and hope the right size was still in stock.
What we built
A gallery-minimal storefront: a lookbook grid, product pages with size variants, a cart that tracks the same garment in two different sizes as two separate honest lines rather than merging them, and a checkout that stays in mock mode until Don supplies real Stripe keys. Free shipping kicks in automatically at $150 of subtotal; below it, a flat rate applies.
Decisions & why
Cart lines keyed on SKU and size together, never SKU alone.
The same blouse in a Small and a Medium are two different physical items a customer is choosing between, not one line with a confusing shared quantity. Keeping them separate is what an honest cart looks like.
A $150 free-shipping threshold applied inclusively, computed straight off the cart subtotal.
The moment a customer's order reaches the number, shipping should read as free, not almost-free, not free next time they refresh. Computing it directly from the subtotal on every render keeps that instant.
Checkout is env-gated: the live Stripe adapter can't even construct without a real key.
A demo storefront should never be one misconfigured environment variable away from processing a real card for a business that doesn't exist. Making the constructor throw without a key closes that off at the code level, not just by convention.
The checkout endpoint re-validates every SKU-and-size pair server-side using the exact same check the cart's own reducer uses.
A cart built in the browser is a claim, not a fact, by the time it reaches the server. Reusing one validity check in both places means there's no separate server-side rule to drift out of sync with the client.
The result it aims for
The build aims to turn a message-and-hope lookbook into a self-serve storefront where every size a customer adds to their cart is one the boutique sells, and every total is one the server honors.
This is the goal the build is designed to hit, not a measured client outcome.