Focalis: A Multi-Tenant SaaS Platform for a 3D Configurator
A client owned a powerful real-time 3D product configurator but no way to sell it as software. We built the multi-tenant SaaS platform around it — admin portal, backend, and billing — so they can onboard and run fully isolated customers themselves, with no code changes and no vendor dependency. Delivered in about six weeks.
The Client's Problem
The client had something valuable: a polished, real-time 3D product configurator built in React and Three.js. What they didn't have was a way to sell it as software. To turn one configurator into a commercial SaaS, they needed a platform layer that could serve multiple isolated clients from a single deployment — each with their own data, users, branding, and settings — and let them onboard a new customer without touching code, redeploying, or calling an engineer. The contract was strict: true multi-tenancy, complete isolation, autonomous onboarding, no performance regression on the configurator, and documentation thorough enough to hand the whole thing off. They came to us to build the two missing pieces — the admin portal and the backend — and wire them cleanly into the configurator they already owned.
What We Built
Challenge 1
A backend that enforces tenant isolation by design — We built a NestJS backend on Clean Architecture (controllers → services → repositories → Prisma) with multi-tenancy enforced in depth: a JWT tenant guard injects tenant context into every request, an interceptor auto-scopes every query to the active tenant, and database-level row isolation backs it up. Cross-tenant access isn't discouraged — it's technically impossible. Fifteen modules and twenty data models cover the full SaaS surface: tenants, auth and roles, products, pricing rules, leads, billing, support, and analytics.
Challenge 2
A self-service admin portal — A Next.js 15 portal (App Router, shadcn/ui) where the client creates, suspends, or deletes a customer with no code changes and no redeployment. Role-based access, email-invitation onboarding, per-tenant branding, a product and pricing engine with CSV import/export and price-change audit logs, a leads pipeline, and a full FR/EN bilingual UI.
Challenge 3
Billing, analytics, and the operational layer — Stripe-powered subscriptions, invoices, and webhooks, with PCI compliance handled by Stripe. An analytics dashboard backed by an event-ingestion pipeline and scheduled aggregation jobs — KPI cards, visit trends, quotes-per-model. Support tickets, in-app notifications, and tutorials round out a platform the client can operate day to day.
Challenge 4
Decoupled architecture and a real handover — Three independently deployable components — the existing configurator, the portal, and the backend — talking over versioned REST contracts, so any one can be swapped without a rewrite. The backend is the single source of truth: Swagger generates the OpenAPI spec and the frontend auto-generates its types from it, so the two repos never drift. We shipped auto-generated API docs, data-model schemas, and deployment runbooks — complete enough for any competent team to deploy, operate, and extend it without us.
The Results
About six weeks from start to a production-grade, fully documented multi-tenant SaaS platform. The client can now onboard and operate new customers entirely on their own — no code changes, no redeployment, no vendor dependency — while the original 3D configurator runs as fast as it did standalone. Every contractual gate was met: true isolation, tenant-level resilience, and a clean ownership handover. They didn't get a configurator with a login bolted on — they got a business they can run and grow themselves.



Why This Project Matters
This is the kind of build that looks simple from the outside and is anything but underneath. Multi-tenancy done wrong leaks one customer's data into another's — so we enforced isolation at three layers and made cross-tenant access impossible by construction, not by convention. And because the client's whole ask was independence, the real deliverable wasn't just the code — it was the documentation and architecture that let them own and extend it without us. We treated their product like ours: built to be handed over, not held hostage.
Tenant Isolation Enforced in Depth — Not by Convention
See Technical DetailsMost multi-tenant bugs come from one missed WHERE clause. We removed that risk structurally: a JWT guard injects tenant context into every request, an interceptor automatically scopes every database query to the active tenant, and row-level isolation backs it at the database. A developer can't accidentally leak data across tenants because the platform won't let the query run unscoped. Suspending or deleting one tenant never touches another.
Built to Be Owned, Not Held Hostage
The contract demanded full ownership transfer, so we treated documentation as a deliverable, not an afterthought. The NestJS backend is the single source of truth — Swagger generates the API contract and the frontend auto-generates its types from it, so nothing drifts. We handed over OpenAPI docs, data-model schemas, deployment runbooks, and environment references: enough for any competent team to deploy, operate, and extend the platform without ever calling us. That's what real handover looks like.
Other Projects
SaaSBake Genie: From Broken to 600 Paying Members
A founder came to us with an AI-built SaaS that was falling apart. Users were waiting to pay — but the product couldn't handle them. We rescued it and launched in two weeks. 600 users came on in the first week. Six months later: 600 paying members and a platform built to scale.
SaaSBarberos: Built From Zero to a Growing SaaS
A founder came to us with a gap in the market: small barbershops were stuck between WhatsApp chaos and overpriced salon software. We built the product, shaped the strategy, and helped launch it — from first line of code to first paying customers.
FintechRebillHub: A Payment Engine Built From the Ground Up
A fintech founder was losing revenue to failed payments and manual processes. They needed a system that could route thousands of transactions across multiple gateways, retry intelligently, and show what's happening in real time. Nothing off the shelf fit. So we built it — concept to production in four weeks.
Ready to Build, Rescue, or Scale Your Product?
Tell us about your project. If it's a good fit, we'll schedule a strategy session.
Let's TalkWe respond within 4 hours during business hours. No obligation.
Questions About Our Work
Common questions from founders exploring our portfolio and considering working with our team.

