Plugin System
Ever Gauzy supports a plugin architecture for extending functionality.
Plugin Structureโ
packages/plugins/
โโโ plugin-integration-github/ # GitHub integration
โโโ plugin-integration-upwork/ # Upwork integration
โโโ plugin-integration-hubstaff/ # HubStaff integration
โโโ plugin-integration-jira/ # Jira integration
โโโ plugin-integration-wakatime/ # Wakatime integration
โโโ plugin-job-search/ # Job search
โโโ plugin-job-matching/ # AI job matching
โโโ plugin-knowledge-base/ # KB module
โโโ plugin-changelog/ # Changelog tracking
โโโ plugin-product-reviews/ # Product reviews
Creating a Pluginโ
1. Create Moduleโ
import { Module } from "@nestjs/common";
@Module({
imports: [],
providers: [CustomPluginService],
controllers: [CustomPluginController],
exports: [CustomPluginService],
})
export class CustomPluginModule {}
2. Register Pluginโ
// In PluginModule or AppModule
@Module({
imports: [
// ... core modules
CustomPluginModule,
],
})
export class AppModule {}
3. Add Entitiesโ
@MultiORMEntity("custom_plugin_data")
export class CustomPluginData extends TenantOrganizationBaseEntity {
@MultiORMColumn()
name: string;
@MultiORMColumn({ nullable: true })
value: string;
}
4. Register Entityโ
Add your entity to the plugin's module:
TypeOrmModule.forFeature([CustomPluginData]);
MikroOrmModule.forFeature([CustomPluginData]);
Plugin Guidelinesโ
- โ
Extend
TenantOrganizationBaseEntityfor tenant scoping - โ Use Multi-ORM decorators
- โ
Define API contracts in
@gauzy/contracts - โ Follow existing service/controller patterns
- โ Don't modify core entities directly
- โ Don't bypass tenant filtering