Validates all required env vars at runtime with zod schemas. Skips validation during build via SKIP_ENV_VALIDATION flag. Replaces scattered process.env access with typed env imports. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
/**
|
|
* Environment variable validation for the editor app.
|
|
*
|
|
* This file validates that required environment variables are set at runtime.
|
|
* Variables are defined in the root .env file.
|
|
*
|
|
* @see https://env.t3.gg/docs/nextjs
|
|
*/
|
|
import { createEnv } from '@t3-oss/env-nextjs'
|
|
import { z } from 'zod'
|
|
|
|
export const env = createEnv({
|
|
/**
|
|
* Server-side environment variables (not exposed to client)
|
|
*/
|
|
server: {
|
|
// Database
|
|
POSTGRES_URL: z.string().min(1),
|
|
SUPABASE_SERVICE_ROLE_KEY: z.string().min(1),
|
|
|
|
// Auth
|
|
BETTER_AUTH_SECRET: z.string().min(1),
|
|
GOOGLE_CLIENT_ID: z.string().optional(),
|
|
GOOGLE_CLIENT_SECRET: z.string().optional(),
|
|
|
|
// Email
|
|
RESEND_API_KEY: z.string().optional(),
|
|
},
|
|
|
|
/**
|
|
* Client-side environment variables (exposed to browser via NEXT_PUBLIC_)
|
|
*/
|
|
client: {
|
|
NEXT_PUBLIC_SUPABASE_URL: z.string().min(1),
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: z.string().optional(),
|
|
},
|
|
|
|
/**
|
|
* Runtime values - pulls from process.env
|
|
*/
|
|
runtimeEnv: {
|
|
// Server
|
|
POSTGRES_URL: process.env.POSTGRES_URL,
|
|
SUPABASE_SERVICE_ROLE_KEY: process.env.SUPABASE_SERVICE_ROLE_KEY,
|
|
BETTER_AUTH_SECRET: process.env.BETTER_AUTH_SECRET,
|
|
GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
|
|
GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
|
|
RESEND_API_KEY: process.env.RESEND_API_KEY,
|
|
// Client
|
|
NEXT_PUBLIC_SUPABASE_URL: process.env.NEXT_PUBLIC_SUPABASE_URL,
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
|
|
},
|
|
|
|
/**
|
|
* Skip validation during build (env vars come from Vercel at runtime)
|
|
*/
|
|
skipValidation: !!process.env.SKIP_ENV_VALIDATION,
|
|
})
|