Feature Flags
Control feature visibility and availability through feature flags.
Overviewβ
Feature flags control which modules and features are available for each organization and tenant.
Default Feature Flagsβ
| Feature | Default | Description |
|---|---|---|
FEATURE_DASHBOARD | β | Dashboard |
FEATURE_TIME_TRACKING | β | Time tracking |
FEATURE_ESTIMATE | β | Estimates |
FEATURE_INVOICE | β | Invoicing |
FEATURE_INVOICE_RECURRING | β | Recurring invoices |
FEATURE_IMPORT_EXPORT | β | Data import/export |
FEATURE_EMPLOYEE_RECURRING_EXPENSE | β | Employee expenses |
FEATURE_ORGANIZATION_RECURRING_EXPENSE | β | Org expenses |
FEATURE_EMPLOYEE_EXPENSE | β | Expense tracking |
FEATURE_ORGANIZATION_PROJECT | β | Projects |
FEATURE_ORGANIZATION_TASK | β | Tasks |
FEATURE_ORGANIZATION_CONTACT | β | Contacts CRM |
FEATURE_ORGANIZATION_TEAM | β | Teams |
FEATURE_EMPLOYEE_LEVEL | β | Employee levels |
FEATURE_ORGANIZATION_DEPARTMENT | β | Departments |
Feature Flag Scopesβ
| Scope | Description |
|---|---|
| Global | Applies to all tenants |
| Tenant | Tenant-specific override |
| Organization | Organization-specific override |
APIβ
# Get available features
GET /api/feature/toggle
# Toggle a feature
PUT /api/feature/toggle
{
"featureId": "feature-uuid",
"enabled": false,
"organizationId": "org-uuid"
}
Frontend Usageβ
@Component({ ... })
export class SomeComponent {
constructor(private featureService: FeatureService) {}
get isTimeTrackingEnabled(): boolean {
return this.featureService.isFeatureEnabled('FEATURE_TIME_TRACKING');
}
}