1. Work
  2. Contract work
  3. Storefronts
Both live

Storefronts

A new brand, live and indexable on day one.

Two storefronts taken from an empty repo to a launched store, catalog structure, design system and pre-launch search work included.

Role
Sole engineer and build lead
Stack
Shopify Hydrogen, Next.js, TypeScript, Supabase
Period
May to July 2026
Status
Both live

01Golden Coast

Golden Coast Beauty

Live 30 Jul 2026

A new premium beauty brand with no store, no catalog structure, no design system, and no product photography. The last of those is the one that usually sets the launch date. You cannot ship a product page without a product image, and a shoot for a full catalog is weeks of scheduling and real money.

151products loaded
144custom descriptions written
~60AI-generated product images
9colors in the design system
  • A headless build on Shopify Hydrogen and Oxygen, with Shopify metaobjects as the CMS
  • A category restructure that matches how people actually shop the range
  • An SEO pass across the store before launch rather than after, so day one was indexable
  • Email capture, set up and tested end to end
  • Behaviour analytics installed and verified

The pre-launch SEO pass was a checklist run at the template level rather than a plugin bolted on afterwards. Work like alt text is trivial before launch and tedious across a live catalog after it.

The pre-launch checklist

  • Titles and meta
  • Structured data
  • Sitemap and robots
  • Open Graph and favicon
  • 301 redirect map
  • GA4 and Meta pixel
  • Alt text

The images were not the interesting part. Handing over the system that makes them was.

The brand team can now generate its own product imagery in the established style without waiting on me or on a photographer. That took the photoshoot off the critical path, and it took me off it too. A launch dependency routed through one contractor is just a slower version of the same problem.

02Lilo

Lilo Curated

Live

A B2B wholesale brand whose buyers do not check out. They ask for a quote, get a line sheet, and negotiate. A cart is the wrong shape for that, so the store does not have one.

Not this

A cart and a checkout.

Instead

A quote-request flow and a custom-branding page, with an admin CMS behind it.

The admin lets the people running the brand change products, collections, page content and the newsletter without a deploy and without me. Auth runs on Supabase SSR behind fail-closed middleware, so a session that cannot be verified is denied rather than waved through.

  • The full catalog, live
  • A quote-request flow and a custom-branding page in place of a cart and a checkout
  • An admin CMS covering products, content, quotes and the newsletter, with password reset and session handling
  • A shipped SEO pass: metadata, sitemap, structured data, Core Web Vitals, and the product category baked into image slugs as a search keyword
Four sources

Line sheets, court sheets, a spreadsheet export and a folder of supplier images.

One catalog

Reconciled before launch, so the store and the admin work from a single source.