Zum Hauptinhalt springen

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​

NamespaceFileDescription
databasedatabase.config.tsDB connection
jwtjwt.config.tsJWT settings
fileStoragefile-storage.configStorage provider
emailemail.config.tsSMTP settings
socialsocial.config.tsOAuth credentials

Accessing Configuration​

@Injectable()
export class MyService {
constructor(private configService: ConfigService) {}

getDbHost(): string {
return this.configService.get<string>("database.host", "localhost");
}
}

Environment Files​

FilePurpose
.envLocal development
.env.localLocal overrides
.env.stagingStaging environment
.env.productionProduction 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;
}