Configuraion

This commit is contained in:
Timo Knuth
2026-04-03 00:19:18 +02:00
parent 7afd39c18c
commit 97a6cc11f7
2 changed files with 29 additions and 16 deletions

View File

@@ -71,11 +71,15 @@ services:
STRIPE_PRICE_ID_PRO_YEARLY: ${STRIPE_PRICE_ID_PRO_YEARLY:-} STRIPE_PRICE_ID_PRO_YEARLY: ${STRIPE_PRICE_ID_PRO_YEARLY:-}
STRIPE_PRICE_ID_BUSINESS_MONTHLY: ${STRIPE_PRICE_ID_BUSINESS_MONTHLY:-} STRIPE_PRICE_ID_BUSINESS_MONTHLY: ${STRIPE_PRICE_ID_BUSINESS_MONTHLY:-}
STRIPE_PRICE_ID_BUSINESS_YEARLY: ${STRIPE_PRICE_ID_BUSINESS_YEARLY:-} STRIPE_PRICE_ID_BUSINESS_YEARLY: ${STRIPE_PRICE_ID_BUSINESS_YEARLY:-}
# Email & Analytics # Email & Analytics
RESEND_API_KEY: ${RESEND_API_KEY:-} RESEND_API_KEY: ${RESEND_API_KEY:-}
NEXT_PUBLIC_POSTHOG_KEY: ${NEXT_PUBLIC_POSTHOG_KEY:-} SMTP_HOST: ${SMTP_HOST:-smtp.qrmaster.net}
NEXT_PUBLIC_POSTHOG_HOST: ${NEXT_PUBLIC_POSTHOG_HOST:-https://us.i.posthog.com} SMTP_PORT: ${SMTP_PORT:-465}
# Cloudflare R2 Storage SMTP_USER: ${SMTP_USER:-timo@qrmaster.net}
SMTP_PASS: ${SMTP_PASS:-}
NEXT_PUBLIC_POSTHOG_KEY: ${NEXT_PUBLIC_POSTHOG_KEY:-}
NEXT_PUBLIC_POSTHOG_HOST: ${NEXT_PUBLIC_POSTHOG_HOST:-https://us.i.posthog.com}
# Cloudflare R2 Storage
R2_ACCOUNT_ID: ${R2_ACCOUNT_ID:-} R2_ACCOUNT_ID: ${R2_ACCOUNT_ID:-}
R2_ACCESS_KEY_ID: ${R2_ACCESS_KEY_ID:-} R2_ACCESS_KEY_ID: ${R2_ACCESS_KEY_ID:-}
R2_SECRET_ACCESS_KEY: ${R2_SECRET_ACCESS_KEY:-} R2_SECRET_ACCESS_KEY: ${R2_SECRET_ACCESS_KEY:-}

View File

@@ -538,17 +538,26 @@ export async function sendAIFeatureLaunchEmail(email: string) {
// SMTP Transport (nodemailer) — used for retention / welcome emails // SMTP Transport (nodemailer) — used for retention / welcome emails
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
function createSmtpTransport() { function createSmtpTransport() {
return nodemailer.createTransport({ const host = process.env.SMTP_HOST || 'smtp.qrmaster.net';
host: process.env.SMTP_HOST || 'smtp.qrmaster.net', const port = parseInt(process.env.SMTP_PORT || '465', 10);
port: parseInt(process.env.SMTP_PORT || '465', 10), const user = process.env.SMTP_USER || 'timo@qrmaster.net';
secure: true, // port 465 = SSL const pass = process.env.SMTP_PASS?.trim();
auth: {
user: process.env.SMTP_USER || 'timo@qrmaster.net', if (!pass) {
pass: process.env.SMTP_PASS, throw new Error('SMTP_PASS is missing. Configure SMTP credentials before sending welcome or retention emails.');
}, }
});
} return nodemailer.createTransport({
host,
port,
secure: port === 465,
auth: {
user,
pass,
},
});
}
const appUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://www.qrmaster.net'; const appUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://www.qrmaster.net';