tambi / src /lib /env.ts
mmt
Make email proxy optional
bd0c17c
Raw
History Blame Contribute Delete
2.39 kB
// @polsia:shared — edit only through declared slots. Code installed by polsia/template-next@0.3.0.
//
// Typed env via @t3-oss/env-nextjs.
//
// Modules contribute env vars via their manifest `contributions` block.
// The installer regenerates this file's slots between the markers below.
// Hand-editing outside those slots is rejected by the ownership validator.
//
// The `no-secrets-in-client-bundle` validator scans the build output and rejects
// the install if any non-NEXT_PUBLIC_ env name appears in client chunks.
import { createEnv } from '@t3-oss/env-nextjs';
import { z } from 'zod';
export const env = createEnv({
server: {
NODE_ENV: z.enum(['development', 'test', 'production']).default('development'),
// D24: Prisma is the framework-native DB client. DATABASE_URL is
// injected by Polsia at deploy time (D23). The actual Postgres is
// provisioned by a separate Polsia service; this module ships the
// client only.
DATABASE_URL: z.string().url(),
// @polsia:slot env_vars_server start
// Modules append additional server-side env vars here at install time.
// @polsia:contrib email start
POLSIA_EMAIL_PROXY_URL: z.string().url().optional(),
// @polsia:contrib email end
// @polsia:slot env_vars_server end
},
client: {
NEXT_PUBLIC_APP_URL: z.string().url().default('http://localhost:3000'),
// Base for @/lib/api-client + proxy.ts connect-src. Default-empty
// (unset) means same-origin `/api`; set only for an external API origin.
NEXT_PUBLIC_API_URL: z.string().url().optional(),
// @polsia:slot env_vars_client start
// Modules append NEXT_PUBLIC_* env vars here at install time.
// @polsia:slot env_vars_client end
},
runtimeEnv: {
NODE_ENV: process.env.NODE_ENV,
DATABASE_URL: process.env.DATABASE_URL,
NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL,
// @polsia:slot env_runtime start
// Modules append runtime-env entries here at install time.
// @polsia:contrib email start
POLSIA_EMAIL_PROXY_URL: process.env.POLSIA_EMAIL_PROXY_URL,
// @polsia:contrib email end
// @polsia:slot env_runtime end
},
emptyStringAsUndefined: true,
// SKIP_ENV_VALIDATION=1 bypasses validation for envless builds (lint/CI/local).
skipValidation: !!process.env.SKIP_ENV_VALIDATION,
});