import { z } from 'zod/v4'; const configSchema = z.object({ DATABASE_URL: z.string().min(1), SERVER_HOST: z.string().default('127.0.0.1'), SERVER_PORT: z.coerce.number().int().positive().default(8080), SMTP_HOST: z.string().default('localhost'), SMTP_PORT: z.coerce.number().int().positive().default(587), SMTP_USER: z.string().optional(), SMTP_PASS: z.string().optional(), SMTP_FROM: z.string().default('tessera@localhost'), UPLOAD_DIR: z.string().default('./data/uploads'), JWT_SECRET: z.string().default('tessera-dev-secret-change-in-production'), // Inbound email MAIL_TRANSPORT: z.enum(['mailtm', 'webhook', 'none']).default('none'), MAILTM_POLL_SECONDS: z.coerce.number().int().positive().default(30), MAILTM_ADDRESS: z.string().optional(), MAILTM_ACCOUNT_ID: z.string().optional(), MAILTM_TOKEN: z.string().optional(), }); export const config = configSchema.parse(process.env);