Multi-tenancy with Teams
Learn how to implement multi-tenancy in your applications using Nuvix Teams.
Nuvix Teams provides an effective way to implement multi-tenancy in your applications. Create a team for each tenant to handle multi-tenant apps with built-in data isolation.
Learn more about Teams
What is multi-tenancy?
Multi-tenancy is a design pattern where a single instance of software serves multiple user groups (tenants). With Nuvix Teams, you can:
- Create a team for each tenant in your application
- Control access to resources using team-based permissions
- Define different roles within each tenant
- Scale to unlimited tenants without code changes
Common use cases
- SaaS applications: Organizations that need isolated data and users
- Collaborative tools: Projects with different access levels
- Educational platforms: Schools with teachers and students
- Business software: Companies with department-based access control
Create teams for tenants
When a new tenant signs up, create a dedicated team that serves as their isolated environment.
import { Client, ID } from "@nuvix/client";
const nx = new Client()
.setEndpoint('https://api.nuvix.in/v1')
.setProject('<PROJECT_ID>');
const teams = client.teams;
// Create team for a new tenant
const tenantTeam = await nx.teams.create(
'example_corp', // Team ID for tenant
'Example Corp', // Tenant name
['owner', 'admin', 'member'] // Tenant roles
);Add members to tenants
Invite users to join a tenant using team memberships. Each member can be assigned different roles for access control.
import { Client } from "@nuvix/client";
const nx = new Client()
.setEndpoint('https://api.nuvix.in/v1')
.setProject('<PROJECT_ID>');
const teams = client.teams;
// Invite a member to the tenant
const membership = await nx.teams.createMembership(
'example_corp', // Team/tenant ID
['admin'], // Member's role in the tenant
'user@example.com', // User's email
undefined, // userId (optional)
undefined, // phone (optional)
'https://example.com/accept-invite' // Redirect URL after accepting
);Secure resources with team permissions
Control access to rows and resources using team-based permissions. This ensures data isolation between tenants.
import { Client, Databases, ID, Permission, Role } from "@nuvix/client";
const nx = new Client()
.setEndpoint('https://api.nuvix.in/v1')
.setProject('<PROJECT_ID>');
const databases = new Databases(client);
// Create a document that only members of "Example Corp" tenant can access
const document = await databases.createDocument(
'invoices_db',
'invoices',
ID.unique(),
{
title: 'Q2 Invoice',
amount: 2500.00,
customer: 'Example Customer',
status: 'pending',
tenant_id: 'example_corp'
},
[
// All Example Corp team members can read
Permission.read(Role.team('example_corp')),
// Only admins can update
Permission.update(Role.team('example_corp', ['admin']))
]
);Query tenant data
When querying data, users will automatically only see documents they have permission to access based on their team memberships.
import { Client, Databases, Query } from "@nuvix/client";
const nx = new Client()
.setEndpoint('https://api.nuvix.in/v1')
.setProject('<PROJECT_ID>');
const databases = new Databases(client);
// Current user will only see invoices they have access to
const documents = await databases.listDocuments(
'invoices_db',
'invoices'
);
// For specific tenant data, you can add a query filter
const tenantDocuments = await databases.listDocuments(
'invoices_db',
'invoices',
[
Query.equal('tenant_id', 'example_corp')
]
);Learn how to manage team invitations
How is this guide?
Last update: