mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-09 20:12:26 +10:00
63 lines
1.7 KiB
TypeScript
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>;
|