feat: Wabenhain Honig-Shop Anwendung

Vollstaendige Next.js/Prisma-E-Commerce-Anwendung fuer eine Imkerei:
Shop, Warenkorb, Stripe-Checkout, Kundenkonto mit 2FA, Admin-Bereich
(Produkte, Ernten, Chargen, Bestellungen, Gutscheine, admin-editierbare
Website-Inhalte), i18n (DE/EN), Rate-Limiting/CSP/Audit-Log-Haertung,
PostgreSQL- und MySQL-Unterstuetzung ueber austauschbare Prisma-
Treiber-Adapter, Unit-/Komponenten-/E2E-Tests.
This commit is contained in:
Nick Szaunig committed 2026-08-17 14:30:28 +02:00
1 parent 5c76fcc266
commit c7927f2883
240 files changed
+26096 -137

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
import Stripe from "stripe";
let stripeClient: Stripe | null = null;
/**
* Lazily erzeugter Stripe-Client. Wirft erst beim tatsächlichen Checkout einen
* verstaendlichen Fehler, wenn STRIPE_SECRET_KEY fehlt, statt den Server-Start
* (z.B. in Docker ohne konfigurierte Zahlungsdaten) zu blockieren.
*/
export function getStripeClient(): Stripe {
if (stripeClient) return stripeClient;
const secretKey = process.env.STRIPE_SECRET_KEY;
if (!secretKey) {
throw new Error(
"STRIPE_SECRET_KEY ist nicht gesetzt. Bitte in der .env-Datei konfigurieren."
);
}
// Ein sk_test_-Schluessel in Produktion faellt sonst nicht auf: Bestellungen
// wirken vollstaendig erfolgreich (Stripe-Testmodus quittiert brav), es
// fliesst aber nie echtes Geld — ein stiller Umsatzausfall statt eines
// Fehlers.
if (process.env.NODE_ENV === "production" && secretKey.startsWith("sk_test_")) {
console.warn(
"STRIPE_SECRET_KEY ist in Produktion ein Test-Schluessel (sk_test_...) — Zahlungen werden im Stripe-Testmodus verarbeitet, es fliesst kein echtes Geld."
);
}
stripeClient = new Stripe(secretKey);
return stripeClient;
}