End-to-end platform for a custom furniture manufacturer: a 3D room planner that lets end customers design and price their furniture in the browser, connected directly to an ERP/production back-office that handles the catalog, dynamic pricing, cutting plans and order execution. From the first online configuration to the workshop floor, everything runs on the same data.
Custom furniture manufacturers operate at the intersection of e-commerce and industrial production. Each order is unique by definition — but the tools available were either off-the-shelf catalogs (no customization) or generic ERPs (no customer-facing experience). Sales, design, costing and production lived in separate worlds, glued together by spreadsheets and phone calls.
Every custom configuration required a salesperson to compute material consumption, hardware lists and labor cost by hand from cabinet drawings. Quotes took days, and a single miscalculation eroded the margin on the whole order.
Cutting plans came from one tool, material stock lived in spreadsheets, orders arrived by email. There was no single source of truth for what was actually being produced today and what raw material it needed.
Customers couldn't preview a custom configuration without booking an in-person consultation. Every online inquiry that didn't end with a meeting silently dropped — a major lost-revenue funnel for high-ticket custom furniture.
A single domain engine powers all three surfaces. The price a customer sees in the 3D configurator is the same price the back-office uses to generate the offer, and the same materials list that ends up on the cutting floor. No re-entry, no spreadsheet bridge.
Next.js + React Three Fiber experience where customers draw their room in 3D, drop furniture from a curated catalog, customize materials, colors and dimensions, and receive an instant price quote. Saved configurations roll over into checkout, address management and payment — a full D2C funnel without an in-person consultation.
Interactive 3D room planner — draw walls, place doors and windows, snap furniture into position with measurement overlays
Real-time pricing — every material, dimension or hardware change recomputes the quote server-side against the same engine the ERP uses
Saved configurations — customers can resume their design across sessions, share it with sales, or convert it directly into an order
Integrated checkout — addresses, payment-return flow and order confirmation handled in the same app
Vite + React workspace for the manufacturer's team. Manage the cabinet (corp) library with embedded 3D GLB previews, define materials, hardware and suppliers, configure dynamic pricing rules, monitor cutting plans, expenses and the production calendar. Built around a granular permission-group system so each department only sees what it owns.
Cabinet builder with GLB previews — model viewer for every corp, panel and hardware item directly in the admin
Materials, hardware & suppliers — full catalog of panels, hardware (feronerie), additional products and supplier (furnizori) relations
Dynamic pricing rules — configurable rules engine for surcharges, discounts and operations (operatiuni) costs per cabinet
Cutting plans & remnants — visualize cutting layouts and track material remnants (resturi materiale) for reuse
Production calendar & orders — orders, deliveries and a production calendar in a single board
RBAC with permission groups — granular control per user/department, enforced both server-side and in the UI
TypeScript + Node backend with around 22 domain models, a real-time pricing engine and a GLB/GLTF asset pipeline for 3D models. PostgreSQL for the source of truth, Redis for hot data, S3 for assets, OpenTelemetry for distributed tracing across every flow from configurator to order fulfillment.
~22 domain models — cabinets, panels, hardware, materials, suppliers, operations, pricing rules, orders, customers, addresses, saved configurations, expenses, remnants and more
GLB/GLTF asset pipeline — server-side optimization via @gltf-transform before models hit the CDN, keeping the configurator fast on mobile
Permission-aware controllers — every endpoint enforces RBAC, with permission groups composing fine-grained capabilities
Observability built-in — OpenTelemetry traces flow through Node, B3 propagation, OTLP HTTP exporter — production debuggability from day one
A domain-driven TypeScript backend that treats every cabinet, panel, material and pricing rule as a first-class entity — designed so the same data answers a customer's "how much does this cost?" and a foreman's "what do we cut today?".
Every change in the configurator — a new dimension, a different wood, an extra drawer — round-trips to the same pricing engine the back-office uses to generate offers. Cabinet definitions resolve to a bill of materials, dynamic pricing rules apply surcharges and discounts, operation costs (cut, edge, drill, assembly) are summed, and the result is cached in Redis with a short TTL so identical configurations stay snappy without going stale.
Because both surfaces hit the same engine, the price a customer sees in their browser is the price the workshop will execute against — there is no "quote" document to drift out of sync with reality.
Every cabinet has a 3D model. We process GLB/GLTF assets server-side with @gltf-transform — geometry deduplication, texture compression, draco encoding — before they hit S3 and the CDN. The configurator loads each model in under a second even on mid-range phones.
Every controller — catalog, orders, pricing rules, expenses — is guarded by a permission group system. Users belong to groups, groups compose fine-grained capabilities. Enforcement happens server-side; the admin UI hides what the user can't touch.
OpenTelemetry instrumentation across HTTP, database and Redis, with B3 propagation and OTLP HTTP export. Every customer quote and every back-office action is traceable end to end — production debugging without guesswork.
Containerized and orchestrated in K3s, with PostgreSQL, Redis and S3-compatible object storage. Stateless API tier scales horizontally; cached pricing and 3D assets shield the database from the long tail of repeated configurator queries.
Architecture allows deployment in public cloud, on-premise or hybrid — the same Helm/k8s manifests run anywhere a Kubernetes control plane does.
Whether it's furniture, fashion, automotive or anything else where every order is unique, the pattern is the same: a 3D / interactive configurator on the customer side and a domain engine that keeps the back-office aligned. Get in touch and we'll talk through it.