← back to Designer Portfolio Pages
src/env.ts
24 lines
import "dotenv/config";
import { z } from "zod";
const EnvSchema = z.object({
PORT: z.string().default("7450"),
BASE_URL: z.string().default("http://45.61.58.125:7450"),
SQLITE_PATH: z.string().default("./data/dev.sqlite"),
COOKIE_SECRET: z.string().min(16),
ANTHROPIC_API_KEY: z.string().optional(),
ANTHROPIC_MODEL: z.string().optional()
});
export type Env = z.infer<typeof EnvSchema>;
export function loadEnv(): Env {
const parsed = EnvSchema.safeParse(process.env);
if (!parsed.success) {
const first = parsed.error.issues[0];
throw new Error(`Invalid env: ${first.path.join(".")}: ${first.message}`);
}
return parsed.data;
}