DeskForge
A 3D desk-setup configurator for tech stores: shoppers build a workspace on their real desk and add the whole set to the cart.


Challenge
People buying a monitor, arm and desk online can’t tell if everything will fit and work together, so they hesitate, buy one item at a time or return what doesn’t fit.
Solution
- 3D configurator: a realistic scene with physically based materials, soft shadows and ambient occlusion, rounded edges, keyboards with real layouts, true product colours, models from Blender and GLB files, RGB lighting, matte or glossy screens; a render budget with merged meshes and a quality mode for phones.
- Desk and room: parametric desks (straight, with a cut-out, L-shaped), the desk’s position in a room, furniture, window, decor and six interior presets.
- Rules engine: placement, ergonomics and mount compatibility (VESA, load, clamp) with warnings and one-click fixes; layouts for one to three monitors; arms and stands; a dimensions mode.
- Catalogue and commerce: a catalogue API with admin, import and OpenAPI; 38 real demo products with photos across 14 categories; variants, discounts and out-of-stock; compatible-product suggestions and “what’s missing”; the whole setup added to the cart in one click.
- Embedding in a store: a loader script under 10 KB gzipped, an embed mode with frame-ancestors CSP and a demo store, a compact widget for product pages.
- Setups: saved by short link, named, “My setups”, a share page with an Open Graph preview, export to PNG and PDF; undo and redo.
- Analytics: an event plan, ingest and funnel, forwarding to GA4 and Meta Pixel with consent, order attribution and average order value.
- Security: containers that don’t run as root, body-size limits, IPv6-aware rate limiting, allowed origins for embedding.
- Architecture: eleven architecture decision records, including a benchmark of rendering engines before choosing one.
Result
The configurator, catalogue, embed and analytics are built and covered by tests; Shopify is the first planned store integration. Measured: 60 product photos went from 18.8 MB to 124.5 KB as thumbnails; the lazy embed frame removed 35–40 ms from LCP; interior presets switch in under 135 ms.