The problem
Every board is different: size, shape, material, thickness, edges, corner cuts, sink and hob cutouts. The price on screen had to match what checkout charged, including 25% VAT, down to the øre, and the old calculator lived outside Shopify.
What I built
- A step by step calculator with 8 board shapes, from a simple rectangle to L and U layouts, drawn live as an SVG with grain direction and labelled sides.
- Pricing driven by metaobjects, so the team changes prices and materials in the Shopify admin without a developer.
- Rules that stop impossible orders: minimum sizes, cutout clearances and overlapping corners.
- A small backend on Netlify that recalculates every price on the server and creates a draft order, so nothing edited in the browser can change what a customer pays.
- The drawing saved to Shopify Files and shown in the admin and in the order confirmation email.
- Phase two added stone as a second material, with 21 stones and their own edges, cutouts and service packages. Phase three added real freight weight for every board.
How I proved it
The result
Live and taking orders. Along the way I found that the backend had been quietly using a months-old copy of the prices because of one missing API permission, and fixed it before the new materials launched.