Module Configuration Guide

Overview

The Go backend uses a configuration-driven module loading system that allows you to selectively enable or disable optional modules. This enables:
  • Fast startup times in CI/test environments by loading only essential modules
  • Environment-specific feature control without code changes
  • Fine-grained module management through named profiles and individual overrides

App Profiles

Profiles are named presets that set the initial state of all module flags. Choose a profile based on your deployment needs:

full (Default)

Enables all optional modules. Use this in production environments where all features are needed. Modules enabled:
  • Leave Management
  • CRM
  • Automation
  • Bulk Operations
  • Export
  • Reports
  • AI
  • Notifications
  • Admin
Or simply omit APP_PROFILE entirely—it defaults to full.

smb

Optimized for small-to-medium business (SMB) deployments with all business modules enabled. Modules enabled: Leave, CRM, Automation, Bulk, Export, Reports, AI, Notifications, Admin

leave

Minimal configuration for leave management-only deployments. Modules enabled: Leave Management, Admin

core

Minimal configuration with only core functionality. Use in CI/test environments to reduce startup time and resource usage. Modules enabled: User, Organizations (always-on)

Individual Module Overrides

You can override individual modules on top of any profile using MODULE_<NAME> environment variables.

Example: Disable AI in SMB Deployment

Result: All SMB modules are enabled except AI.

Example: Enable CRM in Core Profile

Result: Only core modules plus CRM are enabled.

Available Modules

Configuration Precedence

The configuration system applies settings in this order (highest to lowest priority):
  1. Hardcoded — User and Organizations are always enabled
  2. Individual overridesMODULE_<NAME> environment variables
  3. Profile baselineAPP_PROFILE preset

Common Deployment Scenarios

Production (Full Features)

All optional modules enabled. Use when all features are needed.

Staging (Selective Disable)

Start with all features but disable experimental AI features for stability testing.

CI/Tests (Minimal Startup)

Load only essential core modules. Fastest startup time for test runs.

Leave Management Only

Dedicated leave management deployment.

Observability

Startup Logging

The server logs module configuration at startup:
This log confirms which modules are enabled after profile and overrides are applied.

Health Check Endpoint

The /health endpoint includes per-module status:
Response:
Use this endpoint for:
  • Frontend feature detection
  • DevOps tooling verification
  • Debugging module initialization issues

Backward Compatibility

If APP_PROFILE is not set, the system defaults to full, enabling all modules exactly as they were before this feature. Existing deployments require zero changes.

Environment Variable Reference

Profile Selection

Module Overrides

Configuration File Example

Update your .env file:
  • Architecture Overview: docs/backend/go/architecture/
  • Getting Started: docs/backend/go/getting-started.mdx
  • Troubleshooting: docs/backend/go/guides/troubleshooting.md