Files
Reactive-Resume/apps/server/src/config/schema.ts
Amruth Pillai 1825fc3283 - implement disable_email_auth env var
- add sync crowdin translations github action
2023-11-21 09:44:37 +01:00

63 lines
1.7 KiB
TypeScript

import { z } from "nestjs-zod/z";
export const configSchema = z.object({
NODE_ENV: z.enum(["development", "production"]).default("production"),
// Ports
PORT: z.coerce.number().default(3000),
// Client URL (only for development environments)
__DEV__CLIENT_URL: z.string().url().optional(),
// URLs
PUBLIC_URL: z.string().url(),
STORAGE_URL: z.string().url(),
// Database (Prisma)
DATABASE_URL: z.string().url().startsWith("postgresql://"),
// Authentication Secrets
ACCESS_TOKEN_SECRET: z.string(),
REFRESH_TOKEN_SECRET: z.string(),
// Browser
CHROME_TOKEN: z.string(),
CHROME_URL: z.string().url(),
// Mail Server
SMTP_URL: z.string().url().startsWith("smtp://").optional(),
// Storage
STORAGE_ENDPOINT: z.string(),
STORAGE_PORT: z.coerce.number(),
STORAGE_REGION: z.string().default("us-east-1"),
STORAGE_BUCKET: z.string(),
STORAGE_ACCESS_KEY: z.string(),
STORAGE_SECRET_KEY: z.string(),
// Redis
REDIS_URL: z.string().url().startsWith("redis://").optional(),
// Sentry
VITE_SENTRY_DSN: z.string().url().startsWith("https://").optional(),
// Crowdin (Optional)
CROWDIN_PROJECT_ID: z.coerce.number().optional(),
CROWDIN_PERSONAL_TOKEN: z.string().optional(),
// Email (Optional)
DISABLE_EMAIL_AUTH: z.coerce.boolean().optional().default(false),
// GitHub (OAuth)
GITHUB_CLIENT_ID: z.string().optional(),
GITHUB_CLIENT_SECRET: z.string().optional(),
GITHUB_CALLBACK_URL: z.string().url().optional(),
// Google (OAuth)
GOOGLE_CLIENT_ID: z.string().optional(),
GOOGLE_CLIENT_SECRET: z.string().optional(),
GOOGLE_CALLBACK_URL: z.string().url().optional(),
});
export type Config = z.infer<typeof configSchema>;