Skip to content

payam2104/online-shop-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Online-Shop — Backend (Node.js/Express + Stripe)

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.


Inhalt / Funktionen

  • Produkte aus Stripe lesen:
    • GET /products – Liste aktiver Produkte
    • GET /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)

Tech-Stack / Architektur

  • 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: .env via dotenv
  • Caching: einfacher In-Memory-Cache für Produktendpunkte (in Development deaktiviert, in Production kurz aktiv)

Voraussetzungen

  • Node.js 20+
  • Stripe-Account (Testmodus)

Installation & Start

# 1) Abhängigkeiten installieren
npm install

# 2) .env anlegen
# 3) Server starten
node server.js
# → http://localhost:4242

Sicherheit / Best Practices

  • 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.

Hinweise zum Einsatz

  • 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.

Autor

Payam Koushkbaghi

About

Demo-Onlineshop: Node.js/Express-Backend mit Stripe-Checkout (Testmodus).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors