ื“ืœื’ ืœืชื•ื›ืŸ ื”ืจืืฉื™

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โ€‹

FeatureDefaultDescription
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โ€‹

ScopeDescription
GlobalApplies to all tenants
TenantTenant-specific override
OrganizationOrganization-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');
}
}