Case 06 — E-commerce & platform migration [ 2,059 particles · rasterised at build · hand-coded ]

GebaShop: a live Korean-skincare store taken off WordPress and rebuilt as one TypeScript app on Cloudflare’s edge — storefront, payments, shipping and a bilingual admin, no CMS behind it.

GebaShop was a working WordPress/WooCommerce store; it now runs as a single TypeScript application rendered on Cloudflare’s edge — storefront, customer accounts, a bilingual admin and every API route in one codebase, no CMS and no plugin layer. Card and Vipps payments clear real money, Posten Bring rates and labels are live, and the front end ships with no UI framework — no React, no jQuery, no page builders.

GebaShop — E-commerce & platform migration website homepage by Infinite Semantic Inc.

(01) — Challenge

Where it started

E-commerce · Norway

Migrating a live shop is a different job from building a landing page: the catalogue, order history, discount rules, content and — critically — the SEO weight of every old URL had to move without breaking. A plugin stack that had accreted for years needed replacing with code the studio fully controls, while the store kept taking orders. Every legacy WooCommerce address had to keep resolving, or the shop would lose the search ranking it already had.

(02) — Solution

What we built

Hand-coded. Design, build and handover by the same two people.

The engine is one Astro-SSR app on Cloudflare Workers over D1 (SQLite), R2 (images) and KV (sessions, rate-limits, reset tokens); prices are stored as integer øre, never floats. Billing is real: QuickPay v10 with Clearhaus acquiring, card and Vipps, capture and refund from the admin, and every webhook verified by HMAC-SHA256 over the raw body — the amount is always recomputed server-side from the cart, never trusted from the client. Shipping is live: Posten Bring rates by postcode and weight, pickup-point lookup, and one-click booking with label and tracking from the order screen. On top sits a from-scratch bilingual (Norwegian / Russian) admin over the same edge database, plus in-browser WebP resizing on upload, FTS5 search with Norwegian folding, and a bought-together block computed from real co-purchases. Security is not bolted on: PBKDF2-SHA256 at 100 000 iterations, parameterised SQL throughout, and a middleware guard that returns 401 rather than leaking data. Even product pages hold their speed: a product URL measured 99 on mobile and 100 on desktop on 11 August 2026, medians of three runs — a full shop with billing that still loads like a static site.

GebaShop — E-commerce & platform migration website by Infinite Semantic Inc., screen 1
GebaShop — E-commerce & platform migration website by Infinite Semantic Inc., screen 2
GebaShop — E-commerce & platform migration website by Infinite Semantic Inc., screen 3
GebaShop — E-commerce & platform migration website by Infinite Semantic Inc., screen 4
GebaShop — E-commerce & platform migration website by Infinite Semantic Inc., screen 5
GebaShop — E-commerce & platform migration website by Infinite Semantic Inc., screen 6

(03) — Result

What we delivered

83 App routes
33 API endpoints
19 Admin screens
Astro SSR on Cloudflare Workers · D1 · R2 Architecture

(04) — Proof

Measured, not claimed

Third-party audits of gebashop.no. Every score is independently verifiable — the link re-runs the test on the live site.

PageSpeed Insights

Measured August 11, 2026

100
Performance desktop
99
Performance mobile
97
Accessibility
100
Best Practices
100
SEO
3/3
Agentic
Verify on PageSpeed

Want results like these, in writing?

Send the 5-minute brief and a fixed written proposal comes back the same business day.