Headless commerce on Workers for a design studio
Moved off a heavy WooCommerce install to Astro + Workers + D1, loading in 40ms across Asia — while keeping a back office the team already knew.
- Client
- Design studio · Chiang Mai
- Role
- Platform design & build
- Timeline
- 8 weeks
- Stack
- Astro, Cloudflare Workers, D1

98
Lighthouse mobile
41ms
p50 TTFB
-70%
hosting cost
0
plugins to patch
01 — The challenge
The old WooCommerce site ran 34 plugins, a 4.6s LCP on 4G, and inherited security debt from unmaintained plugins.
02 — Approach
Split the storefront into a static-first Workers app with orders in D1, a client-side cart that still degrades gracefully, and a CMS the team can edit themselves.
03 — Outcome
98/100 Lighthouse on mobile, 41ms p50 TTFB across Asia, 70% lower hosting cost, and the team edits products without waiting for a developer.
Stack
Why not an SPA
A small store does not need 400KB of JavaScript to show twelve products. We went static-first and added interactivity only where it earned its bytes.
Structure
Astro (SSR + islands)
├── / → home, editorial
├── /shop → product index (static + filter island)
├── /api/cart → Worker (KV session)
├── /api/orders → Worker → D1
└── /admin → CMS (auth + D1)
Numbers after launch
- LCP 4.6s → 1.1s on 4G
- Monthly cost from ~$120 to ~$18
- Conversion rate +22% in the first two months