Scalable SaaS Platform
New customers onboard without engineering work, on a codebase built to scale rather than be rewritten.

- Sector
- SaaS · B2B SaaS
- Built with
- React
- TypeScript
- Node.js
- PostgreSQL
01 · Discover
What the client needed
A B2B SaaS company had found product-market fit on an early codebase. Every new customer needed engineering work, and enterprise deals asked for features it couldn’t offer.
Requirements
- Multi-tenancy with each customer’s data kept separate
- SSO (SAML and OIDC) and role-based access for enterprise buyers
- Usage-based and seat-based billing
- Self-serve onboarding without engineering help
- An admin console for support and customer success
- Audit logs and a path toward SOC 2
Constraints
- No pause in shipping product features
- Existing customers migrated without downtime
- A small in-house team had to own it afterwards
02 · Pitch
What we proposed
We reviewed the codebase and recommended reshaping it in place rather than a full rewrite.
Options we weighed
What we agreed
- Tenancy and auth first, then billing, then the admin console
- Feature flags so changes ship behind switches
- Automated tests before each risky change
03 · Build
How we built it
We rebuilt the foundations in stages behind feature flags, so customers never saw a big-bang switch.
Every requirement, and what we built for it
| Requirement | What we built |
|---|---|
| Separate customer data | Tenant isolation enforced in the database with row-level security |
| Enterprise sign-in | SSO with SAML and OIDC, plus roles and permissions per workspace |
| Flexible billing | Usage metering with seat and usage-based plans through Stripe |
| Self-serve onboarding | Sign-up, workspace setup, and invites with no engineering involved |
| Support tooling | An admin console to view accounts, manage plans, and help users |
| Compliance groundwork | Audit logs, access reviews, and secrets management |
Platform and architecture
- Frontend
- React and TypeScript
- Backend
- Node.js APIs with tenant context on every request
- Data
- PostgreSQL with row-level security per tenant
- Delivery
- CI/CD with automated tests, preview environments, and feature flags
04 · Handover
Launch and handover
We migrated customers in batches and paired with the in-house team until they owned each part.
- Customer migration in batches with rollback plans
- Architecture decision records for every major choice
- Pairing sessions with the in-house engineers
- Runbooks for releases and incidents
05 · Outcome
The outcome
New customers onboard without engineering work, on a codebase built to scale rather than be rewritten.
New customers onboard themselves, and enterprise requirements are features rather than blockers.
- Onboarding no longer needs engineering time
- SSO and roles ready for enterprise deals
- A codebase built to scale rather than be rewritten
Have a project like this?
A few lines is enough. You’ll hear back from an engineer, not a salesperson.

