The database enforces tenant isolation.
Every business is its own tenant and every query is scoped to it, with PostgreSQL row-level security underneath. One forgotten filter in application code shouldn't be able to expose another business's data.
Most companies describe their engineering. Ours is public. This is the architecture of a multi-tenant product we run in production.
Several Next.js apps, one API, one database. Each business connects its own payment and email accounts.
Next.js 16 and React 19 · Cloudflare Workers through OpenNext
Every business is its own tenant and every query is scoped to it, with PostgreSQL row-level security underneath. One forgotten filter in application code shouldn't be able to expose another business's data.
The web apps share one NestJS API, so the business rules live in one place. A future mobile app can use the same rules instead of a second copy of them.
Each of the nine parts is a module. A bakery and a clinic share one product, and the workspace changes shape to match the business you are in.
Payments land in the business's own Razorpay or Cashfree account, and email goes out from its own address. Their money and their reputation stay theirs.
Saroh is source-available. Have your own engineer review how we work before you ever call us.
saroh.in/ ├─ apps/ │ ├─ api.saroh.in │ ├─ app.saroh.in │ ├─ accounts.saroh.in │ ├─ saroh.app │ └─ saroh.in ├─ packages/ │ ├─ auth database emails │ ├─ integrations object-storage │ └─ site-blocks ui └─ e2e/
We build custom websites, web apps and mobile apps. Tell us what you're working on.