There are many ways you can extend the organization's data model in your applications: you will use this entity for the objects that are shared among the group's users.
For example, here is a popular scenario: we assume users can install integrations for their organizations. Integrations can have the following interface:
integration.ts
enum IntegrationType {
Zapier,
Notion,
// etc
}
interface Integration<IntegrationData = unknown> {
type: IntegrationType;
data: IntegrationData;
}
Then, you can extend the organization's interface and add an integrations
property to Organization
, and initialize it as an empty array []
when you create a new integration:
organization.ts
interface Organization {
// ...
integrations: Integration[];
}