public
anord
read
Ledger
Why work hard when you can work easier?
Languages
Repository composition by tracked source files.
TypeScript
86%
CSS
10%
SQL
3%
Shell
1%
HTML
0%
Trace
apps/api/src/config/env.ts
Trace helps you understand code history line by line. See who changed each line, when it changed, and which commit introduced it.
Author
Date
Commit
Line
Code
1
import "dotenv/config";
2
import { z } from "zod";
4
const envSchema = z.object({
5
NODE_ENV: z.enum(["development", "test", "production"]).default("development"),
6
PORT: z.coerce.number().default(4000),
7
LEDGER_APP_URL: z.string().url().default("http://localhost:5173"),
8
DATABASE_URL: z.string().default("postgresql://ledger:ledger@localhost:5432/ledger"),
9
REDIS_URL: z.string().default("redis://localhost:6379"),
10
JWT_SECRET: z.string().min(8).default("change-me"),
11
SESSION_COOKIE_NAME: z.string().default("ledger_session"),
12
PASSWORD_PEPPER: z.string().min(4).default("change-me"),
13
STORAGE_PROVIDER: z.enum(["local", "s3"]).default("local"),
14
LOCAL_STORAGE_ROOT: z.string().default("storage/uploads"),
15
SMTP_HOST: z.string().optional(),
16
SMTP_PORT: z.coerce.number().default(587),
17
SMTP_USER: z.string().optional(),
18
SMTP_PASSWORD: z.string().optional(),
19
SMTP_FROM_EMAIL: z.string().email().default("[email protected]"),
20
SMTP_FROM_NAME: z.string().default("Ledger"),
21
AI_PROVIDER: z.string().default("none"),
22
AI_MODEL: z.string().default(""),
23
AI_API_KEY: z.string().default(""),
24
OIDC_ISSUER: z.string().optional(),
25
OIDC_CLIENT_ID: z.string().optional(),
26
OIDC_CLIENT_SECRET: z.string().optional(),
27
GOOGLE_CLIENT_ID: z.string().optional(),
28
GOOGLE_CLIENT_SECRET: z.string().optional(),
29
DISCORD_CLIENT_ID: z.string().optional(),
30
DISCORD_CLIENT_SECRET: z.string().optional(),
31
MICROSOFT_CLIENT_ID: z.string().optional(),
32
MICROSOFT_CLIENT_SECRET: z.string().optional(),
33
SLACK_CLIENT_ID: z.string().optional(),
34
SLACK_CLIENT_SECRET: z.string().optional()
35
});
37
export const env = envSchema.parse(process.env);
38
export const isProduction = env.NODE_ENV === "production";