2026-05-16 12:02:15 +01:00

37 lines
1.1 KiB
TypeScript

import { createEnv } from '@t3-oss/env-nextjs';
import { z } from 'zod';
/**
* Zod-validated environment. Imported eagerly from next.config.ts so that
* missing/invalid variables fail the build instead of silently leaking
* `undefined` at runtime.
*/
export const env = createEnv({
server: {
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
DATABASE_URL: z.string().url(),
AUTH_SECRET: z.string().min(1, 'AUTH_SECRET is required'),
AUTH_URL: z.string().url().optional(),
AUTH_DEV_AUTOLOGIN: z
.string()
.optional()
.transform((v) => v === 'true'),
LOG_LEVEL: z
.enum(['fatal', 'error', 'warn', 'info', 'debug', 'trace'])
.default('info'),
},
client: {
NEXT_PUBLIC_APP_URL: z.string().url(),
},
runtimeEnv: {
NODE_ENV: process.env.NODE_ENV,
DATABASE_URL: process.env.DATABASE_URL,
AUTH_SECRET: process.env.AUTH_SECRET,
AUTH_URL: process.env.AUTH_URL,
AUTH_DEV_AUTOLOGIN: process.env.AUTH_DEV_AUTOLOGIN,
LOG_LEVEL: process.env.LOG_LEVEL,
NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
},
emptyStringAsUndefined: true,
});