Skip to content

Add structured startup validation for all required environment variables #890

Description

@RUKAYAT-CODER

Overview

Missing environment variables (e.g. JWT_SECRET, DATABASE_URL, REDIS_URL) cause cryptic runtime errors deep in request handling rather than failing fast at startup. Debugging a 500 caused by undefined being used as a JWT secret is significantly harder than a clear startup error.

Specifications

Features:

  • Validate all required env vars at startup using Joi or class-validator + class-transformer.
  • Fail with a descriptive error message listing all missing or invalid vars.

Tasks:

  • Create src/config/env.validation.ts with a Joi schema for all required and optional env vars, including types and ranges.
  • Register the validation schema in ConfigModule.forRoot({ validationSchema }).
  • Ensure the default || 'default-jwt-secret' fallbacks in auth.service.ts are removed (replaced by required validation).
  • Add unit tests verifying startup failure when required vars are absent.

Impacted Files:

  • src/config/env.validation.ts (new)
  • src/app.module.ts
  • src/auth/auth.service.ts

Acceptance Criteria

  • Application fails at startup with a clear list of missing env vars.
  • No fallback defaults exist for security-critical variables.
  • Unit test simulates missing JWT_SECRET and verifies startup failure.

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions