Validate environment variables with type safety using Zod

Saad Bash

Create env.ts file and define schema with necessary ENV variables

// file: env.ts
import { z } from "zod";

const envSchema = z.object({
    POSTGRES_URL: z.string().url(),
    POSTGRES_PRISMA_URL: z.string().url(),
    POSTGRES_USER: z.string().min(1),
    POSTGRES_HOST: z.string().min(1),
    POSTGRES_PASSWORD: z.string().min(1),
    POSTGRES_DATABASE: z.string().min(1),
    ENV: z.union([
        z.literal("development"),
        z.literal("test"),
        z.literal("production"),
    ]),
});

// Validate `process.env` using the schema
const env = envSchema.parse(process.env);

export default env;

Code IntelliSense when using env

Zod Intellisense