import { join } from "path";
export const config = {
get port() {
return Number(process.env.PORT || 3000);
},
get databaseUrl() {
return process.env.DATABASE_URL || "";
},
get gitReposPath() {
return process.env.GIT_REPOS_PATH || join(process.cwd(), "repos");
},
get gatetestUrl() {
return process.env.GATETEST_URL || "https://gatetest.ai/api/events/push";
},
get gatetestApiKey() {
return process.env.GATETEST_API_KEY || "";
},
get crontechDeployUrl() {
return (
process.env.CRONTECH_DEPLOY_URL ||
"https://crontech.ai/api/hooks/gluecron/push"
);
},
get gluecronWebhookSecret() {
return process.env.GLUECRON_WEBHOOK_SECRET || "";
},
get anthropicApiKey() {
return process.env.ANTHROPIC_API_KEY || "";
},
get emailProvider() {
const v = (process.env.EMAIL_PROVIDER || "log").toLowerCase();
return v === "resend" ? "resend" : "log";
},
get emailFrom() {
return process.env.EMAIL_FROM || "gluecron <no-reply@gluecron.local>";
},
get resendApiKey() {
return process.env.RESEND_API_KEY || "";
},
get appBaseUrl() {
return (process.env.APP_BASE_URL || "http://localhost:3000").replace(
/\/+$/,
""
);
},
get webauthnRpId() {
if (process.env.WEBAUTHN_RP_ID) return process.env.WEBAUTHN_RP_ID;
try {
return new URL(this.appBaseUrl).hostname;
} catch {
return "localhost";
}
},
get webauthnOrigin() {
return process.env.WEBAUTHN_ORIGIN || this.appBaseUrl;
},
get webauthnRpName() {
return process.env.WEBAUTHN_RP_NAME || "gluecron";
},
};
|