Configuration System
How Gauzy manages environment-based configuration across all modules.
Overviewβ
Gauzy uses a layered configuration approach:
ConfigModuleβ
NestJS @nestjs/config module for centralized configuration:
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ".env",
load: [databaseConfig, jwtConfig, fileStorageConfig],
}),
],
})
export class AppModule {}
Configuration Namespacesβ
| Namespace | File | Description |
|---|---|---|
database | database.config.ts | DB connection |
jwt | jwt.config.ts | JWT settings |
fileStorage | file-storage.config | Storage provider |
email | email.config.ts | SMTP settings |
social | social.config.ts | OAuth credentials |
Accessing Configurationβ
@Injectable()
export class MyService {
constructor(private configService: ConfigService) {}
getDbHost(): string {
return this.configService.get<string>("database.host", "localhost");
}
}
Environment Filesβ
| File | Purpose |
|---|---|
.env | Local development |
.env.local | Local overrides |
.env.staging | Staging environment |
.env.production | Production settings |
Validationβ
Configuration is validated at startup using class-validator:
export class EnvironmentVariables {
@IsString()
DB_HOST: string;
@IsNumber()
@Min(1)
@Max(65535)
DB_PORT: number;
}
Related Pagesβ
- Environment Variables β complete variable list
- Production Deployment β deployment config