46 lines
1.8 KiB
TypeScript
46 lines
1.8 KiB
TypeScript
import * as Joi from "joi";
|
|
|
|
export const envValidationSchema = Joi.object({
|
|
DATABASE_URL: Joi.string().required(),
|
|
JWT_SECRET: Joi.string().min(32).required(),
|
|
JWT_REFRESH_SECRET: Joi.string().min(32).required(),
|
|
ENCRYPTION_KEY: Joi.string().length(64).required(),
|
|
|
|
PLAID_CLIENT_ID: Joi.string().required(),
|
|
PLAID_SECRET: Joi.string().required(),
|
|
PLAID_ENV: Joi.string().valid("sandbox", "development", "production").default("sandbox"),
|
|
PLAID_PRODUCTS: Joi.string().default("transactions"),
|
|
PLAID_COUNTRY_CODES: Joi.string().default("US"),
|
|
PLAID_REDIRECT_URI: Joi.string().uri().optional().allow(""),
|
|
|
|
SUPABASE_URL: Joi.string().optional().allow(""),
|
|
SUPABASE_SERVICE_KEY: Joi.string().optional().allow(""),
|
|
SUPABASE_ANON_KEY: Joi.string().optional().allow(""),
|
|
|
|
STRIPE_SECRET_KEY: Joi.string().optional().allow(""),
|
|
STRIPE_WEBHOOK_SECRET: Joi.string().optional().allow(""),
|
|
STRIPE_PRICE_PRO: Joi.string().optional().allow(""),
|
|
STRIPE_PRICE_ELITE: Joi.string().optional().allow(""),
|
|
|
|
SMTP_HOST: Joi.string().optional().allow(""),
|
|
SMTP_PORT: Joi.number().default(587),
|
|
SMTP_USER: Joi.string().optional().allow(""),
|
|
SMTP_PASS: Joi.string().optional().allow(""),
|
|
SMTP_FROM: Joi.string().default("noreply@ledgerone.app"),
|
|
|
|
APP_URL: Joi.string().uri().default("http://localhost:3052"),
|
|
PORT: Joi.number().default(3051),
|
|
NODE_ENV: Joi.string().valid("development", "production", "test").default("development"),
|
|
|
|
CORS_ORIGIN: Joi.string().default("http://localhost:3052"),
|
|
|
|
AUTO_SYNC_ENABLED: Joi.boolean().default(true),
|
|
AUTO_SYNC_INTERVAL_MINUTES: Joi.number().default(15),
|
|
|
|
SENTRY_DSN: Joi.string().optional().allow(""),
|
|
|
|
GOOGLE_CLIENT_ID: Joi.string().optional().allow(""),
|
|
GOOGLE_CLIENT_SECRET: Joi.string().optional().allow(""),
|
|
GOOGLE_REDIRECT_URI: Joi.string().uri().optional().allow(""),
|
|
});
|