Kleines Express-Backend für einen Demo-Onlineshop.
Es liefert Produkte aus Stripe, erstellt Stripe Checkout Sessions (Testmodus) und stellt saubere REST-Endpoints für ein Angular-Frontend bereit.
Dieses Projekt ist für Lern- und Testzwecke gedacht und nicht für den Produktivbetrieb.
- Produkte aus Stripe lesen:
GET /products– Liste aktiver ProdukteGET /products/:id– Detail eines Produkts- Einheitliches Mapping:
{ "id": "prod_...", "title": "Name", "description": "...", "image": "...", "price": 12.99, "priceCents": 1299, "currency": "EUR" }
- Checkout:
POST /create-checkout-session– erstellt eine Stripe-Checkout-Session (mode:payment)- Es werden ausschließlich one_time-Prices verwendet (keine Subscriptions in diesem Beispiel)
- Der Server bestimmt die Price-IDs (Client liefert nur
productId+quantity)
- Healthcheck:
GET /health– einfacher Status-Endpoint
- Webhook (optional):
POST /webhook– verarbeitet Stripe-Events (z. B.checkout.session.completed)
- Runtime: Node.js 20
- Server: Express
- Stripe: Offizielles Stripe SDK (API-Version im Code fixiert für stabile Deploys)
- Sicherheit & Robustheit: Helmet (Security-Header), CORS-Whitelist, Compression, Rate-Limit
- Konfiguration:
.envviadotenv - Caching: einfacher In-Memory-Cache für Produktendpunkte (in Development deaktiviert, in Production kurz aktiv)
- Node.js 20+
- Stripe-Account (Testmodus)
# 1) Abhängigkeiten installieren
npm install
# 2) .env anlegen
# 3) Server starten
node server.js
# → http://localhost:4242- Geheimnisse (Secret Key, Webhook-Secret) gehören nur in .env / Deployment-Secrets.
- CORS nur für definierte Origins erlauben (ENV:
ALLOWED_ORIGINS). - Preislogik auf dem Server: Der Client sendet keine Beträge, nur IDs + Mengen. Der Server ermittelt die gültigen Price-IDs (nur
type: "one_time"). - Rate-Limit, Helmet und Compression sind aktiviert.
- Stripe API-Version im Code fixieren (stabilere Deploys).
- Optional: Idempotency-Key beim Erstellen der Session, um Mehrfach-Klicks/Resends abzufangen.
- Dieses Backend ist bewusst minimal gehalten. Für echte Produktion wären Themen wie Persistenz (Bestellungen speichern), Monitoring/Logging, strukturierte Fehlercodes, Tests, CI/CD, Secrets-Management, Observability usw. zu ergänzen.
Payam Koushkbaghi