03 / 10 · Embeddable 3D furniture planner

quickPlanner

3D kitchen planner that runs in the browser.

Corpus, furniture retailers2026 –Built solo, full-stack

  • Web
  • 3D
  • Backend
quickPlanner public planner with a 3D room
Golden test cases
164
Price parity with Corpus
to the cent
Packages
web · api · e3d · shared

quickPlanner is a furniture planner that companies embed on their websites. The customer places elements in a 3D room, changes their dimensions and decors and sees the price. The elements are the manufacturer's own Corpus .E3D files, and the finished plan exports back to Corpus as a project.

I built it alone: the web app, the API, the parser for the Corpus format and the database.

Context

  • Manufacturers who design in Corpus wanted customers to configure wardrobes and kitchens online, with the same elements, rules and prices they use in production. Existing planners work with their own catalogues, so every element would have to be rebuilt by hand and the prices would drift.

What I built

  • A parser for the Corpus E3D format in TypeScript: boards, formulas, dimension changes, decors and edge bands, shared between browser and server.
  • The 3D planner in React and Three.js: room, placement, live dimension changes, decor picker, price summary.
  • A NestJS API: Supabase JWT checked against JWKS, tenants and members, catalogue upload and parsing, prices and dimension ranges, rate limiting.
  • S3D export that opens in Corpus with the same positions and dimensions as in the planner.
  • A golden test set compared against Corpus itself, so every price rule is proven, not assumed.

How it works

  • The public catalogue at /t/<slug> reads straight from Supabase through read-only RLS, so the embedded planner does not depend on the API being up.
  • Everything that writes (tenants, uploads, members) goes through the API with a Supabase JWT; nothing else can write to the database or storage.
  • The same E3D package evaluates formulas in the browser for live dimension changes and on the server for prices.
  • Admins upload the Corpus element folder, and the catalogue, prices and dimension ranges come out of it.

Screens show demo data.

Outcome

  • 164 golden cases, 56 of them with dimension changes, match Corpus prices to the cent.
  • Swagger documentation, Vitest unit tests and Playwright end-to-end flows for the planner, dimensions, model, language and mobile.
  • Screenshots show demo data.

Stack

  • React
  • TypeScript
  • Vite
  • Three.js
  • NestJS
  • Supabase
  • PostgreSQL
  • Vitest
  • Playwright
  • Swagger

Links