diff --git a/backend/src/config/env.ts b/backend/src/config/env.ts new file mode 100644 index 0000000..ef3dc77 --- /dev/null +++ b/backend/src/config/env.ts @@ -0,0 +1,23 @@ +import { z } from 'zod'; +import dotenv from 'dotenv'; + +dotenv.config(); + +const envSchema = z.object({ + NODE_ENV: z.enum(['development', 'production', 'test']).default('development'), + PORT: z.coerce.number().default(4000), + HOST: z.string().default('0.0.0.0'), + DATABASE_URL: z.string().url(), + REDIS_URL: z.string().url().default('redis://localhost:6379'), + JWT_SECRET: z.string().min(32), +}); + +const parsed = envSchema.safeParse(process.env); + +if (!parsed.success) { + console.error('❌ Invalid environment configuration:', parsed.error.format()); + process.exit(1); +} + +export const env = parsed.data; +export type Env = z.infer;