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:
@@ -0,0 +1,82 @@
|
||||
# Datenbank: "postgresql" (Standard) oder "mysql". Nach einer Aenderung
|
||||
# einmal `pnpm db:push` ausfuehren (schreibt prisma/schema.prisma neu und
|
||||
# generiert den passenden Treiber-Adapter-Client) — siehe README, Abschnitt
|
||||
# "Datenbank-Provider wechseln".
|
||||
DATABASE_PROVIDER=postgresql
|
||||
|
||||
# PostgreSQL (Standard). Fuer docker compose siehe POSTGRES_* unten.
|
||||
DATABASE_URL="postgresql://wabenhain:wabenhain@localhost:5432/wabenhain?schema=public"
|
||||
# MySQL/MariaDB stattdessen:
|
||||
# DATABASE_URL="mysql://wabenhain:wabenhain@localhost:3306/wabenhain"
|
||||
|
||||
# Postgres-Zugangsdaten fuer docker-compose.yml (Datenbank-Container)
|
||||
POSTGRES_USER=wabenhain
|
||||
POSTGRES_PASSWORD=change-me
|
||||
POSTGRES_DB=wabenhain
|
||||
|
||||
# Nur noetig, wenn DATABASE_PROVIDER=mysql: Zugangsdaten fuer den
|
||||
# db-mysql-Container ("docker compose --profile mysql up -d db-mysql")
|
||||
MYSQL_USER=wabenhain
|
||||
MYSQL_PASSWORD=change-me
|
||||
MYSQL_DATABASE=wabenhain
|
||||
|
||||
# Stripe (Test-Keys aus dem Stripe-Dashboard, https://dashboard.stripe.com/test/apikeys)
|
||||
STRIPE_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
STRIPE_PUBLISHABLE_KEY=pk_test_xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
# Webhook-Secret aus `stripe listen` bzw. dem Stripe-Dashboard-Webhook-Endpoint
|
||||
STRIPE_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
# Admin-Zugang: Der interne /admin-Bereich wird NICHT per Basic-Auth
|
||||
# geschuetzt, sondern ueber das normale Kundenkonto-Login (/konto) und die
|
||||
# Rolle "ADMIN" am Konto (siehe README, Abschnitt "Admin-Zugang"). Diese
|
||||
# beiden Werte legt `prisma db seed` als initiales Admin-Konto an, falls es
|
||||
# noch nicht existiert. Eine UNVORHERSEHBARE E-Mail waehlen (nicht
|
||||
# "admin@..." o.ae.) — sonst koennte sich vor dem ersten Seed-Lauf jemand
|
||||
# genau diese Adresse selbst registrieren; prisma/seed.ts befoerdert ein
|
||||
# bereits bestehendes Nicht-Admin-Konto zwar nicht mehr automatisch, ein
|
||||
# unvorhersehbarer Wert ist trotzdem die robustere erste Verteidigungslinie.
|
||||
ADMIN_EMAIL=[email protected]
|
||||
ADMIN_PASSWORD=change-me
|
||||
|
||||
# Geheimer Schluessel zum Signieren der Kundenkonto-JWTs (HS256).
|
||||
# In Produktion MINDESTENS 32 Zeichen (wird beim Start erzwungen).
|
||||
# Erzeugen z.B. mit: openssl rand -base64 32
|
||||
SESSION_SECRET=change-me-to-a-long-random-string
|
||||
|
||||
# Basis-URL der Seite (fuer absolute Links, z.B. in E-Mails/Sitemaps).
|
||||
# Lokale Entwicklung (pnpm dev): http://localhost:3000 (Standard hier).
|
||||
# Vollstaendiger Docker-Betrieb: http://localhost (Caddy laeuft auf Port 80,
|
||||
# siehe SITE_ADDRESS/Caddyfile unten) bzw. die echte Domain in Produktion.
|
||||
NEXT_PUBLIC_SITE_URL=http://localhost:3000
|
||||
|
||||
# Nur fuer den vollstaendigen Docker-Betrieb (docker-compose.yml, Caddyfile):
|
||||
# die oeffentliche Domain, unter der die Seite erreichbar sein soll. Leer
|
||||
# gelassen laeuft Caddy lokal per HTTP auf Port 80 ohne TLS — fuer eine
|
||||
# echte Domain mit automatischem HTTPS z.B. "wabenhain.com" eintragen.
|
||||
SITE_ADDRESS=
|
||||
|
||||
# Google Rezensionen (optional). Ohne diese beiden Werte zeigt die Startseite
|
||||
# automatisch die statischen Beispiel-Stimmen als Fallback.
|
||||
# API-Key: Google-Cloud-Projekt mit aktivierter "Places API".
|
||||
# Place-ID: https://developers.google.com/maps/documentation/places/web-service/place-id
|
||||
GOOGLE_PLACES_API_KEY=
|
||||
GOOGLE_PLACE_ID=
|
||||
|
||||
# Cloudflare Turnstile (optional). Ohne diese beiden Werte wird auf
|
||||
# Registrierung, Newsletter und Firmenanfrage kein CAPTCHA angezeigt und die
|
||||
# serverseitige Pruefung uebersprungen. Site-Key ist oeffentlich (NEXT_PUBLIC_),
|
||||
# Secret-Key bleibt privat. Einrichtung: https://dash.cloudflare.com/?to=/:account/turnstile
|
||||
TURNSTILE_SECRET_KEY=
|
||||
NEXT_PUBLIC_TURNSTILE_SITE_KEY=
|
||||
|
||||
# SMTP fuer Transaktions-E-Mails (Bestellbestaetigung, Newsletter-Opt-in,
|
||||
# Passwort-Reset). Ohne diese drei Werte werden E-Mails nur geloggt statt
|
||||
# versendet — praktisch fuer lokale Entwicklung ohne Mail-Setup.
|
||||
# Funktioniert mit jedem SMTP-Anbieter (z.B. das E-Mail-Postfach eures
|
||||
# Domain-Hosters wie IONOS/Strato, oder ein Dienst wie Resend/Postmark im
|
||||
# SMTP-Modus).
|
||||
SMTP_HOST=
|
||||
SMTP_PORT=587
|
||||
SMTP_USER=
|
||||
SMTP_PASSWORD=
|
||||
SMTP_FROM="Wabenhain <[email protected]>"
|
||||
Reference in New Issue
Block a user