← 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;
}