Context
HausFux and Blizz-z are German e-commerce shops selling made-to-measure showers. Customers pick the model, the size, the glass, the profiles and the hardware, and the shop builds it for them.
Problem
The configurator already existed, but the preview was a set of more than 50 static images that didn’t react to the customer’s choices, and in practice only covered the first screen of options. People ordered without seeing what they were buying, and some orders came in with sizes that made no sense at all, like a shower 20 cm wide. On top of that, a part-time person did nothing but produce renders.
My role
The brief was simple: make the images dynamic. I turned it into a product, and built all of it myself: design, product, front-end, back-end and DevOps.
Key decision: SVG and CSS, not 3D
Instead of reaching for Three.js or a heavy 3D pipeline, I built a layered SVG renderer driven by modern CSS (custom properties, masks, filters, container queries) that composes the shower in real time as the customer picks profiles, glass, hardware and finishes. It loads instantly, renders crisply on any screen, and themes itself for each shop.

One schema drives everything
Every shower model, option, constraint and dependency lives in a schema that non-engineers can edit. From that single source of truth the app generates the step-by-step purchase flow, the validation rules, the price logic and the preview. Adding a product line or an option doesn’t need a release, just a content update.
Behind it there is a full back-office where shop owners run the show: configurators, RAL colors, shops, condition rules, price tables, templates and the Shower Previewer, which reuses the same SVG renderer, so what they tune is exactly what the customer sees. HausFux and Blizz-z run on the same codebase, each with its own brand, colors, products and tax setup.

Outcome
- Orders with completely wrong sizes dropped to zero
- The part-time render work is no longer needed
- New products and options ship as content, not releases
What I’d do differently
I’d start from a point projection engine on day one. It came much later, and it still doesn’t cover everything.



