mirror of
https://github.com/marcogll/TaxHacker_s23.git
synced 2026-01-13 21:35:19 +00:00
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { z } from "zod"
|
|
|
|
const envSchema = z.object({
|
|
BASE_URL: z.string().url().default("http://localhost:7331"),
|
|
PORT: z.string().default("7331"),
|
|
SELF_HOSTED_MODE: z.enum(["true", "false"]).default("false"),
|
|
OPENAI_API_KEY: z.string().optional(),
|
|
BETTER_AUTH_SECRET: z
|
|
.string()
|
|
.min(16, "Auth secret must be at least 16 characters")
|
|
.default("please-set-your-key-here"),
|
|
DISABLE_SIGNUP: z.enum(["true", "false"]).default("false"),
|
|
RESEND_API_KEY: z.string().default("please-set-your-resend-api-key-here"),
|
|
RESEND_FROM_EMAIL: z.string().default("TaxHacker <user@localhost>"),
|
|
RESEND_AUDIENCE_ID: z.string().default(""),
|
|
STRIPE_SECRET_KEY: z.string().default(""),
|
|
STRIPE_WEBHOOK_SECRET: z.string().default(""),
|
|
})
|
|
|
|
const env = envSchema.parse(process.env)
|
|
|
|
const config = {
|
|
app: {
|
|
title: "TaxHacker",
|
|
description: "Your personal AI helper for taxes",
|
|
version: process.env.npm_package_version || "0.0.1",
|
|
baseURL: env.BASE_URL || `http://localhost:${env.PORT || "7331"}`,
|
|
supportEmail: "me@vas3k.com",
|
|
},
|
|
upload: {
|
|
acceptedMimeTypes: "image/*,.pdf,.doc,.docx,.xls,.xlsx",
|
|
},
|
|
selfHosted: {
|
|
isEnabled: env.SELF_HOSTED_MODE === "true",
|
|
redirectUrl: "/self-hosted/redirect",
|
|
welcomeUrl: "/self-hosted",
|
|
},
|
|
ai: {
|
|
openaiApiKey: env.OPENAI_API_KEY,
|
|
modelName: "gpt-4o-mini",
|
|
},
|
|
auth: {
|
|
secret: env.BETTER_AUTH_SECRET,
|
|
loginUrl: "/enter",
|
|
disableSignup: env.DISABLE_SIGNUP === "true" || env.SELF_HOSTED_MODE === "true",
|
|
},
|
|
stripe: {
|
|
secretKey: env.STRIPE_SECRET_KEY,
|
|
webhookSecret: env.STRIPE_WEBHOOK_SECRET,
|
|
paymentSuccessUrl: `${env.BASE_URL}/cloud/payment/success?session_id={CHECKOUT_SESSION_ID}`,
|
|
paymentCancelUrl: `${env.BASE_URL}/cloud`,
|
|
},
|
|
email: {
|
|
apiKey: env.RESEND_API_KEY,
|
|
from: env.RESEND_FROM_EMAIL,
|
|
audienceId: env.RESEND_AUDIENCE_ID,
|
|
},
|
|
} as const
|
|
|
|
export default config
|