30c41c355e
- feature_search: Storefront-Header-Suche + /suche (SSR, SQLite LIKE, case-insensitiv; Name/Kurz/Desc/Material/Kategorie), Treffer als Karten, Leer-Zustand - feature_wishlist: Herz-Button auf Karten/PDP (localStorage, public/wishlist.js) + /merkliste - feature_accounts: getrennte Kunden-Session (Cookie hdc_customer, scrypt), /konto/registrieren|anmelden|abmelden, /konto (Bestellhistorie+Adressbuch), Tabelle customer_addresses, Checkout-Vorbefuellung + orders.customer_id-Zuordnung; Gast-Checkout bleibt - feature_reviews: Tabelle reviews (1-5, Moderation), /api/review (approved=0), PDP-Anzeige Durchschnitt+Reviews + aggregateRating-JSON-LD, Admin /bewertungen (Freigeben/Verbergen/Loeschen) + Nav-Zaehler - feature_abandoned_cart: Tabelle abandoned_carts, /api/cart-capture beim Checkout-Start, /api/cron/abandoned (CRON_TOKEN) sendet Erinnerungsmail (Mailer/Log) + reminded=1, recovered=1 bei Bestellung; Status in Einstellungen - Gating: Flag aus => Storefront-Elemente weg, Routen 302/404, Admin-Nav-Punkt entfaellt; KEIN 'in Vorbereitung' mehr - API/MCP: reviews CRUD + abandoned_carts (read) in admin-api + ai-admin.txt + MCP-Tools; Manifest v2.3 - README + .env.example (CRON_TOKEN, ABANDONED_AFTER_MINUTES); 16 neue Unit-Tests (Suche/Review-Avg/Kunden/Abandoned)
59 lines
2.0 KiB
Bash
59 lines
2.0 KiB
Bash
# hd-commerce — Umgebungsvariablen
|
|
|
|
# --- Datenbank ---
|
|
# Pfad zur SQLite-Datenbank (wird automatisch angelegt)
|
|
DB_PATH=./data/hdc.db
|
|
|
|
# --- Admin-Zugang (Session-Login) ---
|
|
# Initial-Owner, der beim ERSTEN Start angelegt wird (danach im Admin verwaltbar)
|
|
ADMIN_EMAIL=admin@example.com
|
|
ADMIN_PASS=admin
|
|
# Unter welchem Pfad der Admin erreichbar ist (z.B. "admin" -> /admin, "intern" -> /intern)
|
|
ADMIN_PATH=admin
|
|
# Geheimnis zum Signieren der Session-Cookies (HMAC). In Produktion UNBEDINGT setzen!
|
|
SESSION_SECRET=bitte-langes-zufaelliges-geheimnis-setzen
|
|
|
|
# --- KI-/MCP-Admin-API ---
|
|
# Bearer-Token für /api/admin/* (getrennt von der Session). Leer => API gesperrt.
|
|
HDC_API_TOKEN=
|
|
|
|
# --- Stripe (optional) ---
|
|
# Ohne echte Keys läuft der Demo-Checkout-Fallback.
|
|
STRIPE_PUBLIC_KEY=pk_test_xxxxxxxxxxxxxxxxxxxxxxxx
|
|
STRIPE_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxxxxxxxx
|
|
|
|
# --- MCP-Server (mcp/) ---
|
|
# HDC_BASE_URL=https://shop.example.com
|
|
# HDC_API_TOKEN= (dasselbe Token wie oben)
|
|
|
|
# --- Zahlung: Provider-Abstraktion (v2.2) ---
|
|
# Provider explizit wählen: mollie | stripe | demo. Leer => Auto-Wahl nach vorhandenen Keys.
|
|
PAYMENT_PROVIDER=
|
|
# Mollie (Default-Anbieter). Test- oder Live-Key. Ohne gültigen Key läuft der Demo-Fallback.
|
|
MOLLIE_API_KEY=
|
|
# (Stripe-Keys siehe oben — werden weiterhin unterstützt.)
|
|
|
|
# --- E-Mail-Versand (v2.2) ---
|
|
# Provider: listmonk | smtp | (leer => Log-Fallback in DB-Tabelle email_log)
|
|
MAIL_PROVIDER=
|
|
# Absenderadresse für ausgehende Mails
|
|
MAIL_FROM=shop@example.com
|
|
# Listmonk (Transactional-API /api/tx)
|
|
LISTMONK_URL=https://listmonk.example.com
|
|
LISTMONK_USER=
|
|
LISTMONK_PASS=
|
|
LISTMONK_TX_TEMPLATE_ID=
|
|
# SMTP (alternativ, via nodemailer)
|
|
SMTP_HOST=
|
|
SMTP_PORT=587
|
|
SMTP_USER=
|
|
SMTP_PASS=
|
|
SMTP_SECURE=false
|
|
|
|
# --- Feature-Module (v2.3) ---
|
|
# Warenkorb-Erinnerung: Token, das den Cron-Endpoint /api/cron/abandoned schützt.
|
|
# Leer => Endpoint bleibt gesperrt (401). Coolify-Scheduled-Task ruft den Endpoint mit diesem Token.
|
|
CRON_TOKEN=
|
|
# Karten, die älter als X Minuten sind und weder bezahlt noch erinnert wurden, werden erinnert.
|
|
ABANDONED_AFTER_MINUTES=30
|