Web
Static Shopify storefront
A shop that loads like a brochure site, on a store the client already pays for
- astro
- typescript
- shopify
- graphql
A client sells original paintings through a gallery’s shared Shopify store. She wanted her own site — her name, her work, her writing — and the obvious route was to give her a Shopify plan and a theme.
That route has two problems, and neither is technical.
It’s a second monthly bill. Her products already live in a store that works and takes payments. A personal Shopify plan would duplicate that cost to solve a presentation problem, and small businesses feel a recurring charge far more sharply than a one-off build.
It splits the inventory. Two stores means two places a painting can be listed and one place it can be sold, which is a stock bug waiting to happen with one-of-a-kind work. Whichever store you don’t update is the one telling a customer something is available.
So the site isn’t a Shopify store. It’s a static site that reads the store she already has.
How it works
- The catalogue arrives at build time. The build authenticates against the Shopify Admin API, pulls the collection, and generates a real HTML page per painting. No client-side product fetch, nothing to wait for.
- The cart runs in the browser. A public Storefront API token lets the page create a real Shopify cart and add lines to it. The browser stores the cart’s id and nothing else, so prices and stock are Shopify’s answer rather than a stale copy of one.
- Checkout is Shopify’s. Payment, tax and fulfilment stay where they already work. Nobody needs me to reimplement any of that.
The result is a site with no theme runtime, no app scripts, and no cart JavaScript running before you touch anything — while still taking money.
Where it fits
This is the most involved integration built on top of my client site platform — the shared component library the site itself is made of. The platform is the general case; this is the awkward specific one that proved it could carry real behaviour.
The honest limits
This works because the products are one-of-a-kind, low-volume, and already listed somewhere. It gets less convincing with variants, restocking, or a catalogue that changes hourly — at which point you’re rebuilding a store rather than avoiding one. The checkout also hands off to a domain that isn’t hers, which is a trust cost the architecture can’t remove.
Devlog
-
A cart on a site with no server
Letting Shopify own the cart, and keeping only the receipt in localStorage.
-
The cart I didn't build
Two ways to put a cart on a static site, and why the cheap one was the expensive one.
-
Shopify products at build time
Pulling a product catalogue into a static build, and what that costs you.