% =============================================================================
% Analyse und Planung eines Custom E-Commerce Shopsystems
% B2C & B2B -- Weltweiter Einsatz
% Erstellt: April 2026
% =============================================================================

\documentclass[a4paper,12pt]{article}

% --- Sprache & Encoding ---
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}

% --- Layout ---
\usepackage[margin=2.5cm]{geometry}
\usepackage{fancyhdr}
\usepackage{titlesec}
\usepackage{microtype}
\usepackage{parskip}

% --- Tabellen ---
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{tabularx}
\usepackage{array}
\usepackage{multirow}

% --- Farben ---
\usepackage[table,dvipsnames]{xcolor}
\definecolor{mustgreen}{HTML}{2E7D32}
\definecolor{shouldblue}{HTML}{1565C0}
\definecolor{canyellow}{HTML}{F9A825}
\definecolor{notgray}{HTML}{757575}
\definecolor{stackhighlight}{HTML}{E3F2FD}
\definecolor{sectioncolor}{HTML}{1A237E}
\definecolor{linkcolor}{HTML}{0D47A1}

% --- Listen ---
\usepackage{enumitem}

% --- Code ---
\usepackage{listings}
\lstset{
  basicstyle=\ttfamily\small,
  breaklines=true,
  frame=single,
  backgroundcolor=\color{gray!5},
  rulecolor=\color{gray!30},
}

% --- Sonstiges ---
\usepackage{graphicx}
\usepackage{pdflscape}
\usepackage{hyperref}

% --- Hyperref-Setup ---
\hypersetup{
  colorlinks=true,
  linkcolor=linkcolor,
  urlcolor=linkcolor,
  citecolor=linkcolor,
  pdftitle={Analyse und Planung eines Custom E-Commerce Shopsystems},
  pdfsubject={Technologie-Evaluierung, Feature-Analyse und Architekturempfehlung},
  pdfkeywords={E-Commerce, B2C, B2B, NestJS, Next.js, PostgreSQL, Shopsystem},
}

% --- Header/Footer ---
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\small\textit{Shopsystem-Analyse}}
\fancyhead[R]{\small\textit{B2C \& B2B}}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0.4pt}

% --- Custom Commands ---
\newcommand{\must}{\textcolor{mustgreen}{\textbf{PFLICHT}}}
\newcommand{\should}{\textcolor{shouldblue}{\textbf{SOLL}}}
\newcommand{\can}{\textcolor{canyellow}{\textbf{KANN}}}
\newcommand{\notneed}{\textcolor{notgray}{\textbf{NICHT BENÖTIGT}}}
\newcommand{\pro}{\textcolor{mustgreen}{\checkmark}}
\newcommand{\con}{\textcolor{red}{$\times$}}
\newcommand{\neutral}{\textcolor{canyellow}{$\sim$}}

% --- Abschnittsformatierung ---
\titleformat{\section}
  {\Large\bfseries\color{sectioncolor}}{\thesection}{1em}{}
\titleformat{\subsection}
  {\large\bfseries\color{sectioncolor!80}}{\thesubsection}{1em}{}
\titleformat{\subsubsection}
  {\normalsize\bfseries\color{sectioncolor!60}}{\thesubsubsection}{1em}{}

% --- Neue Spaltentypen ---
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

% =============================================================================
\begin{document}

% --- Titelseite ---
\begin{titlepage}
  \centering
  \vspace*{3cm}

  {\Huge\bfseries\color{sectioncolor} Analyse und Planung eines\\[0.3em]
  Custom E-Commerce Shopsystems\par}

  \vspace{1.5cm}

  {\Large Technologie-Evaluierung, Feature-Analyse\\[0.3em]
  und Architekturempfehlung\par}

  \vspace{1cm}

  {\large\textbf{B2C \& B2B -- Weltweiter Einsatz}\par}

  \vspace{3cm}

  \begin{tabular}{ll}
    \textbf{Dokumenttyp:} & Technische Analyse \\
    \textbf{Version:}     & 1.0 \\
    \textbf{Datum:}        & April 2026 \\
    \textbf{Status:}       & Entwurf \\
  \end{tabular}

  \vfill

  {\small Dieses Dokument dient als Entscheidungsgrundlage für die Technologieauswahl
  und Feature-Priorisierung eines maßgeschneiderten E-Commerce-Systems.}
\end{titlepage}

% --- Inhaltsverzeichnis ---
\setcounter{tocdepth}{3}
\tableofcontents
\newpage


% =============================================================================
% KAPITEL 1: EINLEITUNG
% =============================================================================
\section{Einleitung}
\label{sec:einleitung}

\subsection{Projektzielsetzung}

Ziel dieses Projekts ist die Entwicklung eines maßgeschneiderten E-Commerce-Shopsystems,
das sowohl B2C- (Business-to-Consumer) als auch B2B-Geschäftsmodelle (Business-to-Business)
unterstützt. Das System soll weltweit einsetzbar sein und sich durch eine moderne,
skalierbare Architektur auszeichnen.

Im Gegensatz zu bestehenden SaaS-Lösungen (Shopify, WooCommerce) oder
Open-Source-Plattformen (Magento, PrestaShop) bietet ein Custom-System folgende Vorteile:

\begin{itemize}[leftmargin=2em]
  \item \textbf{Volle Kontrolle} über Funktionalität, Datenhoheit und Geschäftslogik
  \item \textbf{Keine GMV-Gebühren} oder plattformabhängige Einschränkungen
  \item \textbf{Maßgeschneiderte B2B-Workflows}, die in Standard-Plattformen oft fehlen
  \item \textbf{Skalierbarkeit} ohne Plattform-Limits
  \item \textbf{Unabhängigkeit} von Drittanbieter-Roadmaps und Lizenzänderungen
\end{itemize}

\subsection{Systemarchitektur -- Überblick}

Das System besteht aus drei Hauptkomponenten:

\begin{description}[leftmargin=2em, labelwidth=2em]
  \item[Backend] RESTful API (optional GraphQL) mit Geschäftslogik, Datenbankzugriff,
    Authentifizierung und Integration externer Dienste (Zahlungen, Versand, Steuern).
  \item[Frontend] Server-Side-Rendered (SSR) Webshop für Endkunden (B2C) und
    Geschäftskunden (B2B) mit optimierter Performance und SEO.
  \item[Admin] Verwaltungsoberfläche für Produkte, Bestellungen, Kunden, Einstellungen
    und Reporting -- separates Deployment mit eigenem Berechtigungssystem.
\end{description}

\subsection{Methodik}

Die Technologiebewertung in diesem Dokument basiert auf folgenden Kriterien:

\begin{enumerate}[leftmargin=2em]
  \item \textbf{Ecosystem-Größe} -- Verfügbarkeit von Paketen, Plugins und Community-Support
  \item \textbf{TypeScript-Unterstützung} -- Typsicherheit für weniger Fehler und bessere DX
  \item \textbf{Skalierbarkeit} -- Fähigkeit, mit wachsender Last umzugehen
  \item \textbf{Time-to-Market} -- Geschwindigkeit der Entwicklung bis zum MVP
  \item \textbf{B2B-Eignung} -- Unterstützung komplexer Geschäftslogik
  \item \textbf{Internationalisierung} -- Multi-Sprache, Multi-Währung, Multi-Region
  \item \textbf{Entwickler-Verfügbarkeit} -- Einstellbarkeit von qualifizierten Entwicklern
  \item \textbf{Langfristige Wartbarkeit} -- Clean Code, Testbarkeit, Modularität
\end{enumerate}

Features werden nach dem MoSCoW-Prinzip priorisiert:
\must{} (Pflicht), \should{} (Soll), \can{} (Kann) und \notneed{} (Nicht benötigt).


% =============================================================================
% KAPITEL 2: TECHNOLOGIE-ANALYSE
% =============================================================================
\newpage
\section{Technologie-Analyse}
\label{sec:technologie}

\subsection{Backend-Frameworks}
\label{subsec:backend}

Die Wahl des Backend-Frameworks bestimmt maßgeblich die Architektur, Entwicklungsgeschwindigkeit
und Skalierbarkeit des gesamten Systems. Für ein E-Commerce-System mit hohen Anforderungen
an Datenintegrität, API-Performance und B2B-Geschäftslogik wurden fünf Frameworks evaluiert.

\begin{table}[htbp]
  \centering
  \caption{Backend-Framework-Vergleich}
  \label{tab:backend}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X X X}
    \toprule
    \textbf{Kriterium} & \textbf{NestJS} & \textbf{FastAPI} & \textbf{Django} & \textbf{Go (Gin)} & \textbf{Rust (Actix)} \\
    \midrule
    Sprache       & TypeScript & Python   & Python   & Go     & Rust \\
    Typsicherheit & Hoch       & Mittel   & Gering   & Hoch   & Sehr hoch \\
    Performance   & Gut        & Gut      & Mittel   & Sehr gut & Exzellent \\
    Ecosystem     & Sehr groß  & Groß     & Sehr groß & Mittel  & Klein \\
    Lernkurve     & Mittel     & Niedrig  & Mittel   & Mittel  & Hoch \\
    B2B-Eignung   & Sehr gut   & Gut      & Gut      & Gut     & Gut \\
    Time-to-Market & Schnell   & Schnell  & Mittel   & Mittel  & Langsam \\
    E-Commerce-Ref. & Medusa, Vendure & Saleor & Saleor & -- & -- \\
    \bottomrule
  \end{tabularx}
\end{table}

\textbf{NestJS (Node.js/TypeScript)} ist die ausgereifteste Wahl für ein modernes E-Commerce-Backend.
Es bietet Enterprise-Patterns wie Dependency Injection, modulare Architektur, Guards und Interceptors.
Die TypeScript-Durchgängigkeit mit dem Frontend eliminiert Kontextwechsel.
Medusa.js und Vendure -- zwei führende Open-Source-E-Commerce-Plattformen -- basieren auf diesem Stack.

\textbf{FastAPI (Python)} überzeugt durch schnelle Entwicklung und native Async-Unterstützung.
Ideal, wenn KI/ML-Features (Produktempfehlungen, Preisoptimierung) im Vordergrund stehen.

\textbf{Django (Python)} bietet ein \enquote{Batteries-included}-Konzept mit eingebautem ORM,
Admin-Panel und Sicherheitsfeatures. Saleor, eine der reifsten Open-Source-Commerce-Plattformen,
nutzt Django als Basis.

\textbf{Go} und \textbf{Rust} bieten überlegene Rohperformance, eignen sich jedoch eher für
spezialisierte Microservices (Zahlungsverarbeitung, Echtzeit-Inventar) als für die gesamte
Anwendungsschicht. Die kleineren Ecosystems erhöhen den Entwicklungsaufwand.


\subsection{Frontend-Frameworks}
\label{subsec:frontend}

Für ein weltweit eingesetztes E-Commerce-Frontend sind Server-Side Rendering (SSR),
SEO-Optimierung und Performance entscheidend. Vier Frameworks wurden verglichen.

\begin{table}[htbp]
  \centering
  \caption{Frontend-Framework-Vergleich}
  \label{tab:frontend}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X X}
    \toprule
    \textbf{Kriterium} & \textbf{Next.js (React)} & \textbf{Nuxt (Vue)} & \textbf{SvelteKit} & \textbf{Angular} \\
    \midrule
    SSR/SSG          & Exzellent (ISR) & Sehr gut    & Gut           & Gut \\
    Ecosystem        & Sehr groß       & Groß        & Wachsend      & Groß \\
    TypeScript       & Nativ           & Nativ       & Nativ         & Nativ \\
    Bundle-Größe     & Mittel          & Mittel      & Sehr klein    & Groß \\
    SEO              & Exzellent       & Sehr gut    & Gut           & Mittel \\
    Komponentenbib.  & Sehr viele      & Viele       & Wenige        & Viele \\
    Lernkurve        & Mittel          & Niedrig     & Niedrig       & Hoch \\
    Arbeitsmarkt     & Sehr groß       & Groß        & Klein         & Groß \\
    E-Commerce-Eig.  & Exzellent       & Sehr gut    & Gut           & Mittel \\
    \bottomrule
  \end{tabularx}
\end{table}

\textbf{Next.js (React)} ist der klare Favorit für E-Commerce:
\begin{itemize}[leftmargin=2em]
  \item \textbf{Incremental Static Regeneration (ISR)} ermöglicht gecachte Produktseiten mit automatischer Aktualisierung
  \item \textbf{Server Components} reduzieren die Bundle-Größe und verbessern die Ladezeit
  \item \textbf{Image Optimization} ist eingebaut -- kritisch für Produktfotografie
  \item Der \textbf{größte Arbeitsmarkt} vereinfacht die Teambildung
\end{itemize}

\textbf{Nuxt (Vue)} ist eine starke Alternative mit einfacherer Lernkurve, besonders in Europa beliebt.

\textbf{SvelteKit} liefert die kleinsten Bundle-Größen -- ideal für Mobile-First-Strategien --
hat aber ein kleineres Ecosystem und weniger E-Commerce-spezifische Bibliotheken.


\subsection{Datenbanken}
\label{subsec:datenbanken}

E-Commerce-Daten erfordern ACID-Konformität (Zahlungen, Bestellungen), flexible
Attributspeicherung (Produktvarianten) und performante Suchabfragen.

\begin{table}[htbp]
  \centering
  \caption{Datenbank-Vergleich}
  \label{tab:datenbanken}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X}
    \toprule
    \textbf{Kriterium} & \textbf{PostgreSQL} & \textbf{MySQL 8.x} & \textbf{MongoDB} \\
    \midrule
    ACID-Konformität       & Vollständig    & Vollständig   & Eingeschränkt \\
    JSON-Unterstützung     & JSONB (indexiert) & JSON (eingeschränkt) & Nativ \\
    Volltextsuche          & Eingebaut      & Eingebaut     & Eingebaut \\
    Relationale Integrität & Exzellent      & Gut           & Keine (FK) \\
    Skalierbarkeit         & Vertikal + Read-Replicas & Vertikal + Replikation & Horizontal (Sharding) \\
    Analytische Queries    & Sehr performant & Mittel       & Langsam \\
    Multi-Tenancy          & Schemas möglich & Datenbanken  & Collections \\
    E-Commerce-Eignung     & Exzellent      & Gut           & Eingeschränkt \\
    ORM-Support            & Prisma, TypeORM & Prisma, TypeORM & Mongoose \\
    \bottomrule
  \end{tabularx}
\end{table}

\textbf{PostgreSQL} ist die empfohlene Wahl:
\begin{itemize}[leftmargin=2em]
  \item JSONB-Spalten ermöglichen flexible Produktattribute bei voller Indexierung
  \item ACID-Konformität sichert finanzielle Datenintegrität
  \item 65--80\% kürzere Ausführungszeiten bei komplexen Filterabfragen gegenüber MongoDB
  \item Alle führenden E-Commerce-Plattformen (Medusa, Saleor, Vendure) nutzen PostgreSQL
\end{itemize}

\textbf{MongoDB} eignet sich \textit{nicht} als primäre Datenbank für E-Commerce aufgrund
fehlender referentieller Integrität und langsamerer analytischer Abfragen. Die Flexibilität
für Produktvarianten wird durch PostgreSQL JSONB gleichwertig abgedeckt.


\subsection{Suchmaschinen}
\label{subsec:suche}

Eine leistungsfähige Produktsuche ist umsatzkritisch. Kunden, die die Suche nutzen,
konvertieren 2--3x häufiger als Browser. Vier Suchmaschinen wurden verglichen.

\begin{table}[htbp]
  \centering
  \caption{Such-Engine-Vergleich}
  \label{tab:suche}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X X}
    \toprule
    \textbf{Kriterium} & \textbf{Meilisearch} & \textbf{Elasticsearch} & \textbf{Algolia} & \textbf{Typesense} \\
    \midrule
    Antwortzeit       & $<$50ms          & $>$100ms        & $<$100ms     & $<$100ms \\
    Setup             & Einfach          & Komplex         & SaaS (einfach) & Einfach \\
    Self-Hosted       & Ja               & Ja              & Nein (SaaS)  & Ja \\
    Kosten            & Kostenlos (OSS)  & Kostenlos (OSS) & Teuer        & Günstig \\
    Tippfehler-Tol.   & Ja (Standard)    & Konfigurierbar  & Ja           & Ja \\
    Facettierung      & Ja               & Ja (mächtig)    & Ja           & Ja \\
    Mehrsprachigkeit  & Gut              & Sehr gut        & Sehr gut     & Gut \\
    Eignung           & Ideal für E-Com. & Enterprise      & Premium      & Gute Alternative \\
    \bottomrule
  \end{tabularx}
\end{table}

\textbf{Meilisearch} ist die Empfehlung für den Start:
In Rust geschrieben, liefert es Antwortzeiten unter 50ms mit eingebauter Tippfehlertoleranz.
Self-Hosted und kostenlos, mit einfacher REST-API. Für Enterprise-Szenarien mit
10M+ Produkten kann später auf Elasticsearch gewechselt werden.


\subsection{Zahlungsanbieter}
\label{subsec:zahlung}

Für weltweiten Einsatz muss das System mehrere Zahlungsanbieter unterstützen,
da regionale Präferenzen stark variieren (SEPA in EU, Alipay in Asien, ACH in USA).

\begin{table}[htbp]
  \centering
  \caption{Payment-Provider-Vergleich}
  \label{tab:zahlung}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X X}
    \toprule
    \textbf{Kriterium} & \textbf{Stripe} & \textbf{Mollie} & \textbf{Adyen} & \textbf{PayPal} \\
    \midrule
    Länder              & 195+         & EU-fokussiert  & 187           & Weltweit \\
    Zahlungsmethoden    & Sehr viele   & EU-Methoden    & 250+          & PayPal + Karten \\
    B2B (Rechnung)      & Stripe Billing & Klarna, SEPA & Ja           & Nein \\
    API-Qualität        & Exzellent    & Sehr gut       & Gut           & Mittel \\
    PCI-Compliance      & SAQ-A        & SAQ-A          & SAQ-A         & SAQ-A \\
    Gebühren (EU)       & 1,5\% + 0,25\euro{} & 1,2--2,9\% & Interchange++ & 1,5--3,5\% \\
    Marktplatz-Support  & Connect      & --             & for Platforms & --  \\
    Eignung             & Primär       & EU-Ergänzung   & Enterprise    & Ergänzung \\
    \bottomrule
  \end{tabularx}
\end{table}

\textbf{Empfehlung:} Stripe als primärer Provider (beste API, weltweite Abdeckung),
Mollie als Ergänzung für europäische Zahlungsmethoden (iDEAL, Bancontact, EPS, Giropay).
Für B2B-Kauf auf Rechnung: Stripe Billing oder Klarna B2B über Mollie.

\textbf{Wichtig:} Keine eigene Zahlungsabwicklung implementieren -- die PCI-DSS-Anforderungen
sind zu aufwändig. Stattdessen Tokenisierung über den jeweiligen Provider nutzen (SAQ-A Level).


\subsection{Infrastruktur \& Deployment}
\label{subsec:infrastruktur}

\begin{table}[htbp]
  \centering
  \caption{Infrastruktur-Vergleich}
  \label{tab:infrastruktur}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X X}
    \toprule
    \textbf{Kriterium} & \textbf{Hetzner} & \textbf{DigitalOcean} & \textbf{AWS} & \textbf{GCP} \\
    \midrule
    Kosten            & Sehr günstig   & Günstig      & Mittel--Hoch  & Mittel \\
    EU-Rechenzentren  & Ja (DE, FI)    & Ja           & Ja            & Ja \\
    DSGVO             & Exzellent (DE) & Gut          & Gut           & Gut \\
    Managed Services  & Begrenzt       & Mittel       & Sehr viele    & Viele \\
    Skalierbarkeit    & Manuell        & Gut          & Exzellent     & Exzellent \\
    Kubernetes        & Nein           & Ja (DOKS)    & Ja (EKS)      & Ja (GKE) \\
    Eignung Start     & MVP/Start      & Wachstum     & Enterprise    & Enterprise \\
    \bottomrule
  \end{tabularx}
\end{table}

\textbf{Empfohlener Deployment-Stack:}
\begin{itemize}[leftmargin=2em]
  \item \textbf{Containerisierung:} Docker + Docker Compose (Standard für alle Umgebungen)
  \item \textbf{CI/CD:} GitHub Actions (automatisierte Tests, Linting, Deployment)
  \item \textbf{Phase 1:} Hetzner Cloud oder DigitalOcean (kosteneffizient, EU-Rechenzentren)
  \item \textbf{Phase 2+:} Migration zu AWS ECS oder Kubernetes bei Bedarf
  \item \textbf{CDN:} Cloudflare (kostenloser Tier, DDoS-Schutz, globale Edge-Server)
  \item \textbf{Dateispeicher:} S3-kompatibel (MinIO self-hosted oder AWS S3)
\end{itemize}


% =============================================================================
% KAPITEL 3: EMPFOHLENER TECHNOLOGIE-STACK
% =============================================================================
\newpage
\section{Empfohlener Technologie-Stack}
\label{sec:stack}

\subsection{Gewichtete Entscheidungsmatrix}

Vier Stack-Kombinationen wurden nach neun Kriterien bewertet (Skala 1--10).
Die Gewichtung reflektiert die Prioritäten des Projekts: schnelle Markteinführung,
B2B-Fähigkeit und weltweite Einsetzbarkeit.

\begin{landscape}
\begin{table}[htbp]
  \centering
  \caption{Gewichtete Entscheidungsmatrix -- Technologie-Stacks}
  \label{tab:matrix}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\linewidth}{l C{1.2cm} X X X X}
    \toprule
    \textbf{Kriterium} & \textbf{Gew.} &
    \textbf{Stack 1: NestJS + Next.js + PG} &
    \textbf{Stack 2: FastAPI + React + PG} &
    \textbf{Stack 3: Nuxt + Node + Mongo} &
    \textbf{Stack 4: Go + React + PG} \\
    \midrule
    Time-to-Market          & 20\% & 9 \quad (1,80)  & 7 \quad (1,40)  & 8 \quad (1,60)  & 5 \quad (1,00) \\
    TypeScript-Durchgäng.   & 15\% & 10 \quad (1,50) & 5 \quad (0,75)  & 8 \quad (1,20)  & 4 \quad (0,60) \\
    Ecosystem \& Pakete     & 15\% & 9 \quad (1,35)  & 8 \quad (1,20)  & 7 \quad (1,05)  & 6 \quad (0,90) \\
    Perform. \& Skalierb.   & 15\% & 7 \quad (1,05)  & 7 \quad (1,05)  & 6 \quad (0,90)  & 10 \quad (1,50) \\
    B2B-Eignung             & 10\% & 9 \quad (0,90)  & 8 \quad (0,80)  & 6 \quad (0,60)  & 7 \quad (0,70) \\
    Entwickler-Verfügb.     & 10\% & 9 \quad (0,90)  & 8 \quad (0,80)  & 7 \quad (0,70)  & 5 \quad (0,50) \\
    AI/ML-Integration       & 5\%  & 6 \quad (0,30)  & 10 \quad (0,50) & 5 \quad (0,25)  & 6 \quad (0,30) \\
    Community \& Support    & 5\%  & 9 \quad (0,45)  & 8 \quad (0,40)  & 7 \quad (0,35)  & 6 \quad (0,30) \\
    Wartbarkeit             & 5\%  & 8 \quad (0,40)  & 7 \quad (0,35)  & 7 \quad (0,35)  & 8 \quad (0,40) \\
    \midrule
    \textbf{Gesamtpunktzahl} & \textbf{100\%} &
    \cellcolor{stackhighlight}\textbf{8,65} &
    \textbf{7,25} &
    \textbf{7,00} &
    \textbf{6,20} \\
    \bottomrule
  \end{tabularx}
\end{table}
\end{landscape}


\subsection{Empfehlung: Stack 1}

\begin{center}
\colorbox{stackhighlight}{%
  \parbox{0.9\textwidth}{%
    \centering\large\bfseries
    NestJS + Next.js + PostgreSQL + Redis + Meilisearch + Stripe/Mollie
  }%
}
\end{center}

\vspace{0.5em}

\textbf{Begründung:}
\begin{enumerate}[leftmargin=2em]
  \item \textbf{Eine Sprache (TypeScript)} über den gesamten Stack -- Backend, Frontend, Admin.
    Kein Kontextwechsel, gemeinsame Typdefinitionen, Code-Sharing zwischen Schichten.
  \item \textbf{NestJS} liefert Enterprise-Architektur (Dependency Injection, Module, Guards,
    Interceptors) -- ideal für komplexe B2B-Geschäftslogik wie Genehmigungsworkflows
    und kundenspezifische Preisgestaltung.
  \item \textbf{Next.js} bietet SSR, ISR und Server Components für optimale SEO und
    Performance -- kritisch für Produktseiten und internationale Reichweite.
  \item \textbf{Größtes Ecosystem} und Arbeitsmarkt -- einfachere Teambildung und
    schnellere Problemlösung durch Community-Support.
  \item \textbf{Direkte Referenzarchitekturen}: Medusa.js (Node.js/TypeScript) und
    Vendure (NestJS/TypeScript) als bewährte Vorbilder.
\end{enumerate}


\subsection{Detaillierter Stack-Überblick}

\begin{table}[htbp]
  \centering
  \caption{Detaillierter Technologie-Stack}
  \label{tab:stackdetail}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l l l X}
    \toprule
    \textbf{Schicht} & \textbf{Technologie} & \textbf{Version} & \textbf{Bemerkung} \\
    \midrule
    Backend         & NestJS + TypeScript & 10.x+  & Modulare Architektur, DI \\
    Frontend (Shop) & Next.js + React     & 15.x+  & App Router, Server Components \\
    Frontend (Admin) & Next.js + React    & 15.x+  & Separates Deployment \\
    ORM             & Prisma              & 6.x+   & Type-safe Database Access \\
    Datenbank       & PostgreSQL          & 16+    & JSONB für flexible Attribute \\
    Cache           & Redis               & 7+     & Sessions, Cart, Rate-Limiting \\
    Suche           & Meilisearch         & 1.x+   & Produkt- und Inhaltssuche \\
    Zahlungen       & Stripe + Mollie     & --     & Stripe primär, Mollie für EU \\
    Job-Queue       & BullMQ              & 5.x+   & E-Mails, Importe, Exporte \\
    Dateispeicher   & S3-kompatibel       & --     & MinIO oder AWS S3 \\
    Deployment      & Docker Compose      & --     & Kubernetes optional später \\
    CI/CD           & GitHub Actions      & --     & Automatisierte Tests + Deploy \\
    CDN             & Cloudflare          & --     & Edge-Caching, DDoS-Schutz \\
    Validierung     & Zod                 & 3.x+   & TypeScript-native Validierung \\
    Testing         & Jest + Playwright   & --     & Unit-, Integration-, E2E-Tests \\
    \bottomrule
  \end{tabularx}
\end{table}


% =============================================================================
% KAPITEL 4: FEATURE-ANALYSE
% =============================================================================
\newpage
\section{Feature-Analyse}
\label{sec:features}

Dieses Kapitel listet alle Features nach Priorität geordnet. Jede Kategorie enthält
konkrete Einzelfeatures mit Zuordnung zu den Systemkomponenten (Backend, Frontend, Admin).

% ---------------------------------------------------------------------------
\subsection{Pflicht-Features (\must)}
\label{subsec:must}

Die folgenden 13 Feature-Kategorien sind für ein funktionsfähiges E-Commerce-System
unabdingbar. Ohne sie kann kein Verkauf stattfinden oder das System entspricht nicht
den gesetzlichen Anforderungen.

\begin{longtable}{c l l c}
  \caption{Pflicht-Features -- Übersicht} \label{tab:must} \\
  \toprule
  \textbf{Nr.} & \textbf{Kategorie} & \textbf{Komponente} & \textbf{Komplexität} \\
  \midrule
  \endfirsthead
  \toprule
  \textbf{Nr.} & \textbf{Kategorie} & \textbf{Komponente} & \textbf{Komplexität} \\
  \midrule
  \endhead
  \bottomrule
  \endfoot
  P01 & Produktverwaltung           & Backend + Admin    & Hoch \\
  P02 & Benutzer \& Authentifizierung & Backend + Frontend & Mittel \\
  P03 & Warenkorb \& Checkout       & Alle               & Hoch \\
  P04 & Bestellverwaltung           & Backend + Admin    & Hoch \\
  P05 & Zahlungsabwicklung          & Backend + Frontend & Hoch \\
  P06 & Versand \& Lieferung        & Backend + Admin    & Mittel \\
  P07 & Steuerberechnung            & Backend            & Hoch \\
  P08 & Sicherheit \& DSGVO         & Alle               & Hoch \\
  P09 & Produktsuche                & Backend + Frontend & Mittel \\
  P10 & Responsives Design          & Frontend           & Mittel \\
  P11 & Mehrsprachigkeit (i18n)     & Alle               & Mittel \\
  P12 & Mehrwährungsfähigkeit       & Backend + Frontend & Mittel \\
  P13 & Admin-Panel                 & Admin              & Hoch \\
\end{longtable}


\subsubsection{P01 -- Produktverwaltung}

Grundlage jedes E-Commerce-Systems. Ohne Produkte kein Verkauf.

\begin{itemize}[leftmargin=2em]
  \item Produktanlage mit Titel, Beschreibung (Rich Text), SKU, EAN/GTIN
  \item Varianten-Management (Größe, Farbe, Material) mit eigenen SKUs und Preisen
  \item Digitale und physische Produkte unterscheiden
  \item Produktbilder mit Galerie, Zoom und Alt-Texten
  \item Hierarchische Kategorien und Tags
  \item Produktattribute (filterbar): Gewicht, Maße, Material, Marke
  \item Lagerbestandsverwaltung: Bestand pro Variante, Reservierung bei Checkout
  \item Produkt-Status: Entwurf, Aktiv, Archiviert
  \item Massenimport/-export (CSV/JSON)
  \item B2B: Kundenspezifische Produktsichtbarkeit (Katalogbeschränkung)
\end{itemize}


\subsubsection{P02 -- Benutzer \& Authentifizierung}

Erforderlich für Bestellhistorie, gespeicherte Adressen und Personalisierung.

\begin{itemize}[leftmargin=2em]
  \item E-Mail/Passwort-Registrierung mit E-Mail-Verifizierung
  \item Passwort-Zurücksetzen (tokenbasiert, zeitlich begrenzt)
  \item Optionaler Social Login (Google, Apple)
  \item Kundenprofil: Name, Adressen (Rechnung/Lieferung), Telefon
  \item B2B: Firmenkonten mit Mitarbeiterverwaltung und Rollenkonzept
  \item Gastbestellung (ohne Registrierung)
  \item Session-Management und sichere Token-Verwaltung (JWT + Refresh-Tokens)
  \item Rate-Limiting auf Login-Versuche (Brute-Force-Schutz)
  \item Multi-Faktor-Authentifizierung (MFA) für Admin-Zugänge
\end{itemize}


\subsubsection{P03 -- Warenkorb \& Checkout}

Der kritischste Conversion-Pfad. Jeder Reibungspunkt kostet Umsatz.

\begin{itemize}[leftmargin=2em]
  \item Warenkorb: Hinzufügen, Entfernen, Mengenänderung
  \item Persistenter Warenkorb (Session + Datenbank für eingeloggte Nutzer)
  \item Warenkorb-Zusammenführung bei Login (Gast-Cart $\rightarrow$ User-Cart)
  \item Mehrstufiger oder Single-Page-Checkout
  \item Rechnungs-/Lieferadresse (getrennt oder identisch)
  \item Versandmethoden-Auswahl mit Echtzeitpreisen
  \item Zahlungsmethoden-Auswahl
  \item Gutscheincode-Eingabe
  \item Bestellübersicht vor Abschluss
  \item B2B: Bestellnummer (PO-Number) eingeben, Genehmigungsworkflow
  \item Warenkorbabbruch-Tracking für spätere Wiederansprache
\end{itemize}


\subsubsection{P04 -- Bestellverwaltung}

Kerngeschäftsdatensatz. Rechtlich erforderliche Aufbewahrung der Bestellhistorie.

\begin{itemize}[leftmargin=2em]
  \item Automatische Bestellnummer-Generierung
  \item Status-Workflow: Ausstehend $\rightarrow$ Bestätigt $\rightarrow$ In Bearbeitung $\rightarrow$ Versendet $\rightarrow$ Zugestellt
  \item Kundenseitige Statusanzeige mit Sendungsverfolgung
  \item Admin: Bestellliste mit Filter, Suche, Sortierung
  \item Admin: Bestelldetails, manuelle Statusänderung
  \item Nachbestellung aus Bestellhistorie (Re-Order)
  \item B2B: Erweiterte Status (Genehmigung ausstehend, Freigegeben, Gesperrt)
  \item Rechnungserstellung (PDF) pro Bestellung
  \item Bestellnotizen (intern und kundensichtbar)
\end{itemize}


\subsubsection{P05 -- Zahlungsabwicklung}

Unterstützung mehrerer Zahlungsmethoden ist für weltweiten Einsatz unerlässlich.

\begin{itemize}[leftmargin=2em]
  \item Stripe-Integration: Kreditkarte, SEPA, Apple Pay, Google Pay
  \item Mollie-Integration: iDEAL, Bancontact, EPS, Giropay, Klarna
  \item PayPal als optionaler dritter Provider
  \item Provider-Abstraktion: einheitliches Interface für alle Zahlungsanbieter
  \item Tokenisierung (keine Kartendaten im System speichern)
  \item 3D Secure 2.0 für Kreditkartenzahlungen
  \item Webhook-Verarbeitung für asynchrone Zahlungsbestätigungen
  \item Teil- und Vollrückerstattungen
  \item B2B: Kauf auf Rechnung (Net 30/60/90), SEPA-Lastschrift
  \item Mehrwährungsfähige Zahlungen
\end{itemize}


\subsubsection{P06 -- Versand \& Lieferung}

Verschiedene Produkte, Gewichte und Zielorte erfordern unterschiedliche Versandoptionen.

\begin{itemize}[leftmargin=2em]
  \item Mehrere Versanddienstleister (DHL, DPD, UPS, FedEx, lokale Carrier)
  \item Echtzeit-Versandkostenberechnung oder feste Versandkostentabellen
  \item Adressvalidierung (länderspezifisch)
  \item Versandetikett-Generierung
  \item Sendungsverfolgungsnummern mit Carrier-Tracking-Links
  \item Kostenloser Versand ab Bestellwert (konfigurierbar)
  \item B2B: Speditionsversand für Großbestellungen
  \item Internationale Versandregeln und Zolldeklarationen
\end{itemize}


\subsubsection{P07 -- Steuerberechnung}

Gesetzliche Pflicht. Fehlerhafte Steuerberechnung führt zu Bußgeldern.

\begin{itemize}[leftmargin=2em]
  \item Automatische MwSt-Berechnung nach Kundenstandort
  \item EU-MwSt: 15--27\% je nach Land, OSS-Regelung für digitale Güter
  \item US Sales Tax: Bundesstaat- und City-Level (2000+ Jurisdiktionen)
  \item UK VAT: 20\% Standard nach Brexit
  \item Steuersätze pro Produktkategorie (Normalsatz, ermäßigt, befreit)
  \item B2B: Reverse-Charge-Verfahren bei gültiger USt-IdNr
  \item USt-IdNr-Validierung über VIES (EU)
  \item Steuerberichte für Buchhaltung (Export CSV/PDF)
  \item Integration mit TaxJar oder Avalara für automatisierte Steuerberechnung
\end{itemize}


\subsubsection{P08 -- Sicherheit \& DSGVO}

Nicht verhandelbar. DSGVO-Verstöße: bis zu 20 Mio. EUR oder 4\% des Jahresumsatzes.

\begin{itemize}[leftmargin=2em]
  \item HTTPS/TLS 1.3 für gesamte Kommunikation
  \item Passwort-Hashing mit bcrypt oder Argon2
  \item Verschlüsselung sensibler Daten (PII) in der Datenbank
  \item DSGVO: Einwilligungsmanagement, Cookie-Banner, Datenschutzerklärung
  \item Recht auf Löschung (Konto- und Datenlöschung auf Anfrage)
  \item Datenportabilität (Export persönlicher Daten als JSON/CSV)
  \item Audit-Logging aller Admin-Aktionen
  \item CORS, CSP, HSTS und weitere Security-Header
  \item Rate-Limiting und DDoS-Schutz
  \item Regelmäßige Dependency-Updates (Sicherheitspatches)
\end{itemize}


\subsubsection{P09 -- Produktsuche}

Kunden erwarten schnelle, relevante Suchergebnisse.

\begin{itemize}[leftmargin=2em]
  \item Volltextsuche über Produktnamen, Beschreibungen, SKUs
  \item Autocomplete/Suchvorschläge während der Eingabe
  \item Tippfehlertoleranz (Fuzzy-Matching)
  \item Antwortzeit unter 200ms
  \item Ergebnis-Paginierung
  \item B2B: Suche nach SKU, Artikelnummer, interner Bezeichnung
  \item Indexierung über Meilisearch mit automatischer Synchronisation
\end{itemize}


\subsubsection{P10 -- Responsives Design}

Über 50\% des E-Commerce-Traffics kommt von Mobilgeräten.

\begin{itemize}[leftmargin=2em]
  \item Mobile-First responsive Design
  \item Touch-optimierte Buttons und Interaktionen
  \item Lazy Loading für Bilder
  \item Optimierte Ladezeit auf 3G/4G-Verbindungen ($<$3 Sekunden)
  \item Mobile-Wallet-Support (Apple Pay, Google Pay)
  \item Testen auf verschiedenen Geräten und Bildschirmgrößen
\end{itemize}


\subsubsection{P11 -- Mehrsprachigkeit (i18n)}

60\% der Onlinekäufer kaufen selten auf englischsprachigen Seiten.
13\% höhere Conversion bei muttersprachlicher Darstellung.

\begin{itemize}[leftmargin=2em]
  \item UI-Lokalisierung: alle Texte, Fehlermeldungen, E-Mails
  \item Produktbeschreibungen in mehreren Sprachen
  \item Spracherkennung (Accept-Language Header + GeoIP)
  \item Sprachumschalter ohne Session-Verlust
  \item URL-Struktur: \texttt{/de/produkte}, \texttt{/en/products}, \texttt{/fr/produits}
  \item RTL-Unterstützung für Arabisch
  \item i18next oder react-intl als Frontend-Bibliothek
  \item Anbindung an Übersetzungsmanagement-Plattform (Crowdin, Lokalise)
\end{itemize}


\subsubsection{P12 -- Mehrwährungsfähigkeit}

Kunden erwarten Preise in ihrer lokalen Währung.

\begin{itemize}[leftmargin=2em]
  \item Automatische Währungserkennung (GeoIP-basiert)
  \item Manueller Währungsumschalter
  \item Basiswährung + automatische Umrechnung über Echtzeit-Wechselkurse
  \item Alternativ: feste Preise pro Währung (wichtig für B2B-Verträge)
  \item Korrekte Währungsformatierung pro Locale (\$100.00 vs. 100,00~\euro{} vs. ¥100)
  \item Unterstützung gängiger Währungen: EUR, USD, GBP, CHF, JPY, CNY etc.
  \item Währungsspezifische Zahlungsabwicklung
\end{itemize}


\subsubsection{P13 -- Admin-Panel}

Zentrale Verwaltungsoberfläche für den täglichen Betrieb.

\begin{itemize}[leftmargin=2em]
  \item Dashboard: Umsatz, Bestellungen, Neukunden, Topseller
  \item Produktverwaltung: CRUD, Massenbearbeitung, Bildupload
  \item Bestellverwaltung: Liste, Detail, Statusänderung, Rückerstattung
  \item Kundenverwaltung: Übersicht, Bestellhistorie, Notizen
  \item Einstellungen: Shop-Name, Währung, Steuersätze, Versandoptionen
  \item E-Mail-Template-Verwaltung
  \item Benutzerrollen und Berechtigungen (Admin, Manager, Support)
  \item Einfache Berichte (Umsatz nach Zeitraum, Kategorie, Kunde)
  \item Export-Funktionen (CSV/PDF)
\end{itemize}


% ---------------------------------------------------------------------------
\subsection{Soll-Features (\should)}
\label{subsec:should}

Diese 12 Feature-Kategorien verbessern das System erheblich und sind für ein
wettbewerbsfähiges Produkt wichtig. Sie sollten in Phase 2 implementiert werden.

\begin{longtable}{c l l c}
  \caption{Soll-Features -- Übersicht} \label{tab:should} \\
  \toprule
  \textbf{Nr.} & \textbf{Kategorie} & \textbf{Komponente} & \textbf{Komplexität} \\
  \midrule
  \endfirsthead
  \toprule
  \textbf{Nr.} & \textbf{Kategorie} & \textbf{Komponente} & \textbf{Komplexität} \\
  \midrule
  \endhead
  \bottomrule
  \endfoot
  S01 & B2B-Preisgestaltung          & Backend + Admin    & Hoch \\
  S02 & Erweiterte Suche \& Filter   & Backend + Frontend & Mittel \\
  S03 & Aktionen \& Rabatte          & Backend + Admin    & Mittel \\
  S04 & Wunschliste                  & Backend + Frontend & Niedrig \\
  S05 & Bewertungen \& Rezensionen   & Backend + Frontend & Mittel \\
  S06 & E-Mail-Benachrichtigungen    & Backend            & Mittel \\
  S07 & SEO-Optimierung              & Frontend + Backend & Mittel \\
  S08 & Analytics \& Reporting        & Admin + Backend    & Mittel \\
  S09 & CMS / Blog                   & Alle               & Mittel \\
  S10 & Multi-Warehouse-Inventar     & Backend + Admin    & Hoch \\
  S11 & Retouren \& RMA              & Backend + Admin    & Mittel \\
  S12 & REST/GraphQL API             & Backend            & Mittel \\
\end{longtable}


\subsubsection{S01 -- B2B-Preisgestaltung}

Kern-Feature für B2B. Ohne kundenspezifische Preise kein ernsthafter B2B-Betrieb.

\begin{itemize}[leftmargin=2em]
  \item Kundengruppen-basierte Preise (Händler, Großhändler, VIP)
  \item Kundenspezifische Preislisten (vertraglich vereinbart)
  \item Staffelpreise: 1--10 Stk. $\rightarrow$ 10~\euro{}, 11--50 Stk. $\rightarrow$ 9~\euro{}, 50+ Stk. $\rightarrow$ 8~\euro{}
  \item Rabatte auf Kategorie- oder Produktebene pro Kundengruppe
  \item Netto-Preisanzeige für B2B-Kunden, Brutto für B2C
  \item Mindestbestellmenge (MOQ) pro Produkt konfigurierbar
  \item Angebotsanfrage (RFQ) für individuelle Preisverhandlung
\end{itemize}


\subsubsection{S02 -- Erweiterte Suche \& Filter}

Verbessert die Conversion um 10--20\% durch gezieltes Finden.

\begin{itemize}[leftmargin=2em]
  \item Facettierte Suche: Preis, Kategorie, Marke, Farbe, Größe, Bewertung
  \item Dynamische Filteranzahl (zeigt verfügbare Produkte pro Filter)
  \item Sortierung: Relevanz, Preis, Neuheit, Beliebtheit, Bewertung
  \item Gespeicherte Suchen (besonders für B2B-Wiederholungskäufe)
  \item Filterbare Produktlisten in Kategorieseiten
\end{itemize}


\subsubsection{S03 -- Aktionen \& Rabatte}

Marketing-Werkzeug zur Umsatzsteigerung und Kundengewinnung.

\begin{itemize}[leftmargin=2em]
  \item Gutscheincodes: prozentual, absolut, kostenloser Versand
  \item Einmal- oder Mehrfachverwendung, ablaufdatumbasiert
  \item Automatische Kampagnen: Zeitraum, Kategorie, Mindestbestellwert
  \item Warenkorb-Aktionen: \enquote{Kaufe 2, erhalte 3. gratis}
  \item Bundle-Rabatte: Produktkombinationen günstiger
  \item Treuestufen: Rabatt basierend auf Gesamtumsatz des Kunden
\end{itemize}


\subsubsection{S04 -- Wunschliste}

Erhöht Wiederbesuchsrate. Kunden speichern Produkte für späteren Kauf.

\begin{itemize}[leftmargin=2em]
  \item Produkte zur Wunschliste hinzufügen/entfernen
  \item Wunschliste teilen (URL-basiert)
  \item Benachrichtigung bei Preissenkung oder Wiederverfügbarkeit
  \item Produktvergleich (2--5 Produkte nebeneinander)
\end{itemize}


\subsubsection{S05 -- Bewertungen \& Rezensionen}

Social Proof steigert Conversion. Bewertungen sind wertvoller SEO-Content.

\begin{itemize}[leftmargin=2em]
  \item 5-Sterne-Bewertung + Freitextrezension
  \item Nur nach Kaufabschluss bewertbar (verifizierte Käufe)
  \item Admin-Moderation vor Veröffentlichung
  \item \enquote{Hilfreich}-Markierung durch andere Kunden
  \item Durchschnittsbewertung auf Produktseite und in Suchergebnissen
  \item Antwortfunktion für den Shopbetreiber
\end{itemize}


\subsubsection{S06 -- E-Mail-Benachrichtigungen}

Reduziert Support-Anfragen und hält Kunden informiert.

\begin{itemize}[leftmargin=2em]
  \item Bestellbestätigung (sofort nach Bestellabschluss)
  \item Zahlungsbestätigung
  \item Versandbestätigung mit Tracking-Link
  \item Zustellungsbenachrichtigung
  \item Passwort-Zurücksetzen, Kontobestätigung
  \item Optionale Warenkorbabbruch-E-Mail
  \item Template-Engine mit Variablen (Bestellnummer, Kundenname, Produkte)
  \item Anbindung an E-Mail-Service (SendGrid, AWS SES, Brevo)
\end{itemize}


\subsubsection{S07 -- SEO-Optimierung}

Kritisch für organisches Wachstum. Produktseiten müssen in Suchmaschinen gefunden werden.

\begin{itemize}[leftmargin=2em]
  \item Individuelle Meta-Tags (Title, Description) pro Seite
  \item Saubere URL-Struktur: \texttt{/produkte/rote-laufschuhe}
  \item Automatische XML-Sitemap-Generierung
  \item Structured Data / JSON-LD (Product, BreadcrumbList, Organization)
  \item Canonical-Tags zur Vermeidung von Duplicate Content
  \item Open Graph und Twitter Cards für Social Sharing
  \item Bildoptimierung mit Alt-Texten und WebP-Format
  \item hreflang-Tags für mehrsprachige Seiten
\end{itemize}


\subsubsection{S08 -- Analytics \& Reporting}

Datenbasierte Entscheidungen für Sortiment, Preise und Marketing.

\begin{itemize}[leftmargin=2em]
  \item Umsatz-Dashboard: Tages-, Wochen-, Monatsumsatz, YoY-Vergleich
  \item Top-Produkte, Kategorie-Performance
  \item Kundenanalyse: Neukunden vs. Wiederkäufer, Customer Lifetime Value
  \item Bestandsberichte: Slow-Mover, Out-of-Stock-Rate
  \item Conversion-Funnel: Besucher $\rightarrow$ Warenkorb $\rightarrow$ Checkout $\rightarrow$ Kauf
  \item Google Analytics 4 (GA4) Integration
  \item Export in CSV/PDF für Buchhaltung und Management
\end{itemize}


\subsubsection{S09 -- CMS / Blog}

Content-Marketing treibt organischen Traffic und baut Autorität auf.

\begin{itemize}[leftmargin=2em]
  \item Statische Seiten (Über uns, Kontakt, AGB, Datenschutz)
  \item WYSIWYG-Editor für Seiteninhalt
  \item Blog mit Kategorien, Tags, Autor, Veröffentlichungsdatum
  \item Zeitgesteuerte Veröffentlichung (Scheduled Publishing)
  \item Wiederverwendbare Content-Blöcke (Testimonials, Feature-Boxen)
  \item SEO-Felder pro Seite/Beitrag
\end{itemize}


\subsubsection{S10 -- Multi-Warehouse-Inventar}

Für skalierende Unternehmen mit mehreren Lagerstandorten.

\begin{itemize}[leftmargin=2em]
  \item Mehrere Lagerorte anlegen
  \item Bestand pro Variante und Lagerort verwalten
  \item Automatische Lagerort-Auswahl bei Bestellung (Nähe zum Kunden)
  \item Lagerumzüge zwischen Standorten tracken
  \item Verfügbarkeitsanzeige: verfügbar, reserviert, verkaufbar
  \item Nachbestellpunkte und Bestandsalarme
\end{itemize}


\subsubsection{S11 -- Retouren \& RMA}

Kunden erwarten einen einfachen Rückgabeprozess. Gute Retourenpolitik erhöht Conversion.

\begin{itemize}[leftmargin=2em]
  \item Retourenanfrage aus Bestellhistorie erstellen
  \item RMA-Nummern-Generierung
  \item Retourenetikett-Generierung
  \item Rückgabefrist konfigurierbar (z.B. 30 Tage)
  \item Teilretouren (einzelne Artikel einer Bestellung)
  \item Rückerstattung oder Gutschrift nach Wareneingang
  \item Zustandsbewertung zurückgesendeter Ware
\end{itemize}


\subsubsection{S12 -- REST/GraphQL API}

Ermöglicht Mobile Apps, Drittanbieter-Integrationen und headless Betrieb.

\begin{itemize}[leftmargin=2em]
  \item REST API für alle Kernressourcen (Produkte, Bestellungen, Kunden, Cart)
  \item OpenAPI/Swagger-Dokumentation (automatisch generiert)
  \item Optional: GraphQL-Endpunkt für flexiblere Frontend-Abfragen
  \item API-Versionierung (v1, v2) für Abwärtskompatibilität
  \item API-Key-Authentifizierung und OAuth 2.0
  \item Rate-Limiting pro API-Key
  \item Webhooks für Events (Bestellung erstellt, Zahlung bestätigt, Versand)
  \item Webhook-Retry-Mechanismus und Logging
\end{itemize}


% ---------------------------------------------------------------------------
\subsection{Kann-Features (\can)}
\label{subsec:can}

Diese 11 Feature-Kategorien sind Nice-to-have und sollten in Phase 3 oder
bedarfsgesteuert implementiert werden. Sie bieten Mehrwert, sind aber nicht
geschäftskritisch.

\begin{longtable}{c l l c}
  \caption{Kann-Features -- Übersicht} \label{tab:can} \\
  \toprule
  \textbf{Nr.} & \textbf{Kategorie} & \textbf{Komponente} & \textbf{Komplexität} \\
  \midrule
  \endfirsthead
  \toprule
  \textbf{Nr.} & \textbf{Kategorie} & \textbf{Komponente} & \textbf{Komplexität} \\
  \midrule
  \endhead
  \bottomrule
  \endfoot
  K01 & Treueprogramm / Bonuspunkte  & Alle               & Mittel \\
  K02 & Abonnements / Wiederkehrende Best. & Backend + Frontend & Hoch \\
  K03 & Marktplatz (Multi-Vendor)    & Alle               & Sehr hoch \\
  K04 & KI-gestützte Empfehlungen    & Backend + Frontend & Hoch \\
  K05 & Live-Chat / Chatbot          & Frontend           & Mittel \\
  K06 & Social-Media-Integration     & Frontend           & Niedrig \\
  K07 & Geschenkkarten               & Backend + Frontend & Mittel \\
  K08 & EDI / PunchOut (Enterprise)  & Backend            & Hoch \\
  K09 & A/B-Testing                  & Frontend + Backend & Mittel \\
  K10 & PWA-Support                  & Frontend           & Mittel \\
  K11 & Multi-Tenant / Multi-Store   & Alle               & Sehr hoch \\
\end{longtable}


\subsubsection{K01 -- Treueprogramm / Bonuspunkte}

Steigert Customer Lifetime Value und Wiederkaufrate.

\begin{itemize}[leftmargin=2em]
  \item Punktesystem: 1 Punkt pro 1~\euro{} Umsatz
  \item Punkte einlösen gegen Rabatte oder Gratisprodukte
  \item Ablaufdatum für Punkte (konfigurierbar)
  \item Mitgliedsstufen: Bronze, Silber, Gold mit steigenden Vorteilen
  \item Empfehlungsprogramm: Belohnung für Weiterempfehlung
\end{itemize}


\subsubsection{K02 -- Abonnements / Wiederkehrende Bestellungen}

Wiederkehrender Umsatz, Kundenkomfort bei Verbrauchsartikeln.

\begin{itemize}[leftmargin=2em]
  \item Abo-Produkte mit flexiblen Intervallen (wöchentlich, monatlich, quartalsweise)
  \item Pausieren, Überspringen, Kündigen durch Kunden
  \item Automatische Verlängerung und Zahlung
  \item Erinnerung vor Verlängerung
  \item Mengenänderung zwischen Zyklen
\end{itemize}


\subsubsection{K03 -- Marktplatz (Multi-Vendor)}

Erweitert das Sortiment ohne eigenes Inventar. Erfordert erheblichen Zusatzaufwand.

\begin{itemize}[leftmargin=2em]
  \item Vendor-Registrierung und -Freischaltung
  \item Vendor-Dashboard: eigene Produkte, Bestellungen, Umsatz
  \item Provisionsmodell (konfigurierbar pro Vendor)
  \item Admin-Genehmigung neuer Produkte
  \item Vendor-Auszahlungsmanagement
  \item Separate Vendor-Bewertungen
\end{itemize}


\subsubsection{K04 -- KI-gestützte Empfehlungen}

Erhöht den durchschnittlichen Bestellwert durch personalisierte Vorschläge.

\begin{itemize}[leftmargin=2em]
  \item \enquote{Ähnliche Produkte} auf Produktseiten
  \item \enquote{Häufig zusammen gekauft} im Warenkorb
  \item Personalisierte Empfehlungen basierend auf Kauf- und Browsinghistorie
  \item Collaborative Filtering oder Content-Based Algorithmen
  \item Empfehlungen in E-Mails
\end{itemize}


\subsubsection{K05 -- Live-Chat / Chatbot}

Echtzeit-Support verbessert Kundenzufriedenheit und reduziert Warenkorbabbrüche.

\begin{itemize}[leftmargin=2em]
  \item Chat-Widget auf der Website
  \item KI-Chatbot für häufige Fragen (FAQ, Bestellstatus)
  \item Eskalation an menschlichen Mitarbeiter
  \item Offline-Nachrichtenerfassung
  \item Chat-Verlaufshistorie
\end{itemize}


\subsubsection{K06 -- Social-Media-Integration}

Kostenloser Marketing-Kanal durch Social Sharing.

\begin{itemize}[leftmargin=2em]
  \item Social Login (Facebook, Google, Apple)
  \item Produkt-Teilen auf Social Media
  \item Instagram/TikTok Shopping-Integration
  \item Social-Media-Pixel für Remarketing (Meta, TikTok)
\end{itemize}


\subsubsection{K07 -- Geschenkkarten}

Zusätzliche Umsatzquelle und Geschenkoption.

\begin{itemize}[leftmargin=2em]
  \item Digitale Geschenkkarten mit festen oder individuellen Beträgen
  \item E-Mail-Zustellung mit personalisierter Nachricht
  \item Einlösung im Checkout
  \item Restguthaben-Verwaltung
  \item Optionales Ablaufdatum
\end{itemize}


\subsubsection{K08 -- EDI / PunchOut (Enterprise B2B)}

Für Integration mit Großkunden-Beschaffungssystemen (SAP Ariba, Coupa).

\begin{itemize}[leftmargin=2em]
  \item EDI-Nachrichtenformate (X12, EDIFACT) empfangen und verarbeiten
  \item PunchOut-Katalog: Produktkatalog über cXML bereitstellen
  \item Automatische Bestellverarbeitung aus Procurement-Systemen
  \item Authentifizierung gegenüber Einkaufssystem des Kunden
\end{itemize}


\subsubsection{K09 -- A/B-Testing}

Datengesteuerte Optimierung von Conversion-Raten.

\begin{itemize}[leftmargin=2em]
  \item Test-Framework: Varianten von UI, Preisen, Content ausspielen
  \item Traffic-Splitting zwischen Varianten
  \item Statistische Auswertung (Signifikanzniveau)
  \item Gewinner-Deklaration und automatisches Rollout
\end{itemize}


\subsubsection{K10 -- PWA-Support}

App-ähnliche Erfahrung ohne App-Store-Installation.

\begin{itemize}[leftmargin=2em]
  \item Service Worker für Offline-Funktionalität
  \item Install-Prompt (Manifest.json, App-Icon, Splashscreen)
  \item Push-Notifications für Bestellstatus und Angebote
  \item Cache-Strategien für häufig besuchte Seiten
\end{itemize}


\subsubsection{K11 -- Multi-Tenant / Multi-Store}

Mehrere Shops/Marken aus einer Instanz betreiben. Hohe architektonische Komplexität.

\begin{itemize}[leftmargin=2em]
  \item Separate Stores mit eigenen Produkten, Preisen, Einstellungen
  \item Datenisolierung pro Store (Kunden, Bestellungen)
  \item Geteilte Ressourcen: Produktkatalog mit store-spezifischen Preisen
  \item Ein Admin-Panel für alle Stores
  \item Store-spezifische Domains, Währungen, Sprachen
\end{itemize}


% ---------------------------------------------------------------------------
\subsection{Nicht benötigte Features (\notneed)}
\label{subsec:notneed}

Die folgenden Funktionen liegen außerhalb des Systemscopes. Sie werden besser
durch spezialisierte Drittanbieter abgedeckt und per API angebunden.

\begin{table}[htbp]
  \centering
  \caption{Abgrenzung -- Nicht benötigte Features}
  \label{tab:notneed}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X}
    \toprule
    \textbf{Kategorie} & \textbf{Begründung} & \textbf{Alternative (Integration)} \\
    \midrule
    Eigene Buchhaltung / ERP &
      Zu komplex, regulatorisch anspruchsvoll,
      schnell veraltet. Besser als Integration. &
      DATEV, sevDesk, lexoffice, Xero, NetSuite \\
    Vollständiges WMS &
      Lagerverwaltung (Picking, Packing, Routenoptimierung)
      ist hochspezialisiert. &
      ShipHero, Fulfillmenttools, externe WMS per API \\
    Eigene Zahlungsabwicklung &
      PCI-DSS Level 1 erfordert jährliche Audits
      (\$50K--\$500K). Unverhältnismäßig. &
      Stripe, Mollie, Adyen (Tokenisierung) \\
    E-Mail-Marketing-Plattform &
      Spezialisierte Tools bieten Segmentierung,
      Automation und Analytics auf Enterprise-Niveau. &
      Mailchimp, Brevo (ex-Sendinblue), Klaviyo \\
    Social-Media-Management &
      Nicht Kernaufgabe eines Shopsystems.
      Separater Workflow und Tools. &
      Buffer, Hootsuite, Later \\
    Vollständiges CRM &
      Kundenbeziehungsmanagement umfasst
      Sales-Pipeline, Ticketing, Anrufmanagement. &
      HubSpot, Salesforce, Pipedrive \\
    \bottomrule
  \end{tabularx}
\end{table}

\textbf{Prinzip:} Das Shopsystem stellt für jede dieser Kategorien
Schnittstellen (REST API, Webhooks) bereit, über die Drittanbieter
angebunden werden. Es implementiert diese Funktionen nicht selbst.


% =============================================================================
% KAPITEL 5: B2B-SPEZIFISCHE ANFORDERUNGEN
% =============================================================================
\newpage
\section{B2B-spezifische Anforderungen}
\label{sec:b2b}

Der gleichzeitige Support von B2C und B2B ist eine der größten Herausforderungen
des Systems. B2B-Kunden haben fundamental andere Anforderungen als Endverbraucher.

\subsection{B2B vs. B2C -- Fundamentale Unterschiede}

\begin{table}[htbp]
  \centering
  \caption{B2B vs. B2C -- Feature-Vergleich}
  \label{tab:b2bvsb2c}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X}
    \toprule
    \textbf{Aspekt} & \textbf{B2C} & \textbf{B2B} & \textbf{Implementierung} \\
    \midrule
    Preisgestaltung &
      Einheitlich für alle Kunden &
      Kundenspezifisch, vertraglich &
      Preisgruppen-Engine, Preislisten \\
    Preisanzeige &
      Brutto (inkl. MwSt) &
      Netto (zzgl. MwSt) &
      Toggle basierend auf Kontotyp \\
    Bestellprozess &
      Sofortkauf, keine Genehmigung &
      Genehmigungspflichtig ab Betrag X &
      Workflow-Engine mit Eskalation \\
    Zahlung &
      Sofort (Karte, PayPal) &
      Auf Rechnung (Net 30/60/90) &
      Kreditlimit-Prüfung, Invoicing \\
    Konto &
      Einzelperson &
      Firma mit mehreren Mitarbeitern &
      Company-Account-Hierarchie \\
    Bestellmenge &
      Einzelstücke &
      Großmengen, Paletten &
      MOQ, Staffelpreise, Schnellbestellung \\
    Katalog &
      Gesamtes Sortiment &
      Kundenspezifischer Katalog &
      Katalogzuweisung pro Kundengruppe \\
    Kaufentscheidung &
      Emotional, schnell &
      Rational, mehrere Entscheider &
      Angebotssystem, Verhandlung \\
    \bottomrule
  \end{tabularx}
\end{table}


\subsection{Firmenkonten \& Rollenmanagement}

\begin{itemize}[leftmargin=2em]
  \item \textbf{Company Account:} Übergeordnetes Konto mit Firmendaten
    (Name, USt-IdNr, Adresse, Zahlungsbedingungen)
  \item \textbf{Mitarbeiter-Accounts:} Zugeordnet zum Company Account, mit individuellen Rollen:
  \begin{description}[leftmargin=2em]
    \item[Einkäufer] Kann bestellen bis zu einem Betragslimit
    \item[Genehmiger] Kann Bestellungen freigeben
    \item[Admin] Kann Mitarbeiter verwalten, Rollen zuweisen
    \item[Finanz] Kann Rechnungen einsehen und Zahlungen verwalten
    \item[Viewer] Nur Lesezugriff auf Bestellhistorie und Katalog
  \end{description}
  \item \textbf{Einladungsworkflow:} Admin lädt Mitarbeiter per E-Mail ein
  \item \textbf{Budgetlimits:} Pro Mitarbeiter oder Abteilung konfigurierbar
\end{itemize}


\subsection{Genehmigungsworkflows}

\begin{enumerate}[leftmargin=2em]
  \item Einkäufer legt Bestellung an und übermittelt zur Genehmigung
  \item System prüft: Bestellwert $>$ Limit $\rightarrow$ Genehmigung erforderlich
  \item Genehmiger erhält E-Mail-Benachrichtigung
  \item Genehmiger: Freigeben, Ablehnen oder Kommentieren
  \item Bei Mehrstufigkeit: Eskalation an nächste Ebene
  \item Nach Freigabe: automatische Zahlungsauslösung und Bestellverarbeitung
\end{enumerate}


\subsection{Zahlungsbedingungen}

\begin{itemize}[leftmargin=2em]
  \item \textbf{Kauf auf Rechnung:} Net 30, Net 60, Net 90 (pro Kunde konfigurierbar)
  \item \textbf{Kreditlimit:} Maximaler offener Rechnungsbetrag pro Firma
  \item \textbf{SEPA-Lastschrift:} Einmaliges Mandat, wiederkehrende Einzüge
  \item \textbf{Vorkasse:} Überweisung mit automatischer Zuordnung (IBAN-Referenz)
  \item \textbf{Skonto:} 2\% Rabatt bei Zahlung innerhalb von 10 Tagen
  \item \textbf{Zahlungserinnerungen:} Automatisiert bei Fälligkeit und Überfälligkeit
\end{itemize}


\subsection{Schnellbestellung \& CSV-Upload}

B2B-Kunden kennen ihre Artikelnummern und wollen schnell große Bestellungen aufgeben:

\begin{itemize}[leftmargin=2em]
  \item \textbf{Quick-Order-Formular:} SKU + Menge eingeben, direkt in den Warenkorb
  \item \textbf{CSV-Upload:} Bestellliste hochladen (SKU, Menge) für Massenbestellungen
  \item \textbf{Bestellvorlagen:} Wiederkehrende Bestellungen als Template speichern
  \item \textbf{Nachbestellung:} Ein-Klick-Wiederholung vergangener Bestellungen
\end{itemize}


% =============================================================================
% KAPITEL 6: INTERNATIONALISIERUNG
% =============================================================================
\newpage
\section{Internationalisierung}
\label{sec:i18n}

Für weltweiten Einsatz muss das System von Beginn an auf Internationalisierung
ausgelegt sein. Nachträgliches Hinzufügen ist um ein Vielfaches aufwändiger.

\subsection{Übersicht der Anforderungen}

\begin{table}[htbp]
  \centering
  \caption{Internationalisierungsanforderungen}
  \label{tab:i18n}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X}
    \toprule
    \textbf{Aspekt} & \textbf{Ansatz} & \textbf{Technologie} \\
    \midrule
    Übersetzungen &
      Key-Value mit Pluralisierung und ICU Message Format &
      i18next / next-intl \\
    Währungen &
      Echtzeit-Kurse + manuell gepflegte Preise pro Währung &
      Open Exchange Rates API \\
    Datumsformate &
      Locale-basierte Formatierung &
      Intl API (ECMAScript) \\
    Zahlenformate &
      Locale-basiert (1.000,50 vs. 1,000.50) &
      Intl.NumberFormat \\
    Adressen &
      Länderspezifische Adressfelder und Validierung &
      Google Address Validation API \\
    Rechtstexte &
      Separate AGB, Widerrufsbelehrung, Datenschutz pro Land &
      CMS mit Sprachzuordnung \\
    Maßeinheiten &
      Metrisch (EU) vs. Imperial (US, UK) &
      Konfiguration pro Region \\
    RTL-Support &
      Arabisch, Hebräisch: Right-to-Left Layout &
      CSS logical properties, dir-Attribut \\
    \bottomrule
  \end{tabularx}
\end{table}


\subsection{Mehrsprachigkeit (i18n)}

\textbf{URL-Strategie:} Sprachpräfix im Pfad (empfohlen für SEO):
\begin{lstlisting}
example.com/de/produkte/rote-schuhe
example.com/en/products/red-shoes
example.com/fr/produits/chaussures-rouges
\end{lstlisting}

\textbf{Vorteile:} Eine Domain, zentralisierte Domain-Autorität,
einfachere Verwaltung als Subdomains.

\textbf{Spracherkennung (Priorität):}
\begin{enumerate}[leftmargin=2em]
  \item URL-Pfad (\texttt{/de/...})
  \item Gespeicherte Benutzerpräferenz (Cookie/Account)
  \item Accept-Language Header des Browsers
  \item GeoIP-basierter Fallback
\end{enumerate}

\textbf{Übersetzungsmanagement:}
\begin{itemize}[leftmargin=2em]
  \item Entwickler pflegen Schlüssel in JSON-Dateien (Standardsprache: Englisch)
  \item Professionelle Übersetzer arbeiten über Plattform (Crowdin, Lokalise)
  \item Automatischer Pull der Übersetzungen ins Repository via CI/CD
  \item Produktbeschreibungen: mehrsprachige Felder in der Datenbank
\end{itemize}


\subsection{Mehrwährungsfähigkeit}

\textbf{Zwei Strategien (beide unterstützen):}

\begin{description}[leftmargin=2em]
  \item[Automatische Umrechnung] Basiswährung (EUR) + Echtzeit-Wechselkurse.
    Gut für B2C mit vielen Märkten. Preise können zwischen Seitenbesuchen schwanken.
  \item[Feste Preise pro Währung] Manuell gepflegte Preise in jeder Währung.
    Wichtig für B2B-Verträge und Preiskonsistenz. Höherer Pflegeaufwand.
\end{description}

\textbf{Währungsformatierung} muss locale-korrekt sein:
\begin{itemize}[leftmargin=2em]
  \item USA: \$1,000.00
  \item Deutschland: 1.000,00~\euro{}
  \item Japan: ¥1,000 (keine Dezimalstellen)
  \item Schweiz: CHF 1'000.00
\end{itemize}


\subsection{Regionale Rechtsanforderungen}

\begin{itemize}[leftmargin=2em]
  \item \textbf{EU:} DSGVO, Widerrufsbelehrung, Preisangabenverordnung (Grundpreis),
    Impressumspflicht, Cookie-Consent
  \item \textbf{Deutschland:} Buttonlösung (\enquote{Zahlungspflichtig bestellen}),
    Fernabsatzgesetz, Verpackungsgesetz
  \item \textbf{UK:} UK GDPR (post-Brexit), Consumer Rights Act, VAT-Regeln
  \item \textbf{USA:} CCPA/CPRA (Kalifornien), CAN-SPAM Act, keine einheitliche Datenschutzregelung
  \item \textbf{Weitere:} LGPD (Brasilien), PIPA (Südkorea), APPI (Japan)
\end{itemize}


% =============================================================================
% KAPITEL 7: SICHERHEIT & COMPLIANCE
% =============================================================================
\newpage
\section{Sicherheit \& Compliance}
\label{sec:sicherheit}

\subsection{DSGVO / GDPR}

Die DSGVO gilt für alle Unternehmen, die personenbezogene Daten von EU-Bürgern
verarbeiten -- unabhängig vom Firmensitz.

\textbf{Kernprinzipien und ihre Umsetzung im System:}

\begin{itemize}[leftmargin=2em]
  \item \textbf{Datenminimierung:} Nur erforderliche Daten erheben.
    Keine Pflichtfelder für nicht-benötigte Informationen.
  \item \textbf{Zweckbindung:} Daten nur für den angegebenen Zweck verwenden.
    Klare Trennung von Bestelldaten und Marketingdaten.
  \item \textbf{Einwilligungsmanagement:} Explizites Opt-in für Newsletter,
    Cookie-Tracking, personalisierte Werbung. Kein Pre-Checked-Checkbox.
  \item \textbf{Recht auf Löschung:} Kundenkonto vollständig löschbar.
    Bestelldaten anonymisieren (gesetzliche Aufbewahrungsfristen beachten).
  \item \textbf{Datenportabilität:} Export aller persönlichen Daten als JSON/CSV.
  \item \textbf{Auftragsverarbeitung:} DPA (Data Processing Agreement)
    mit allen Drittanbietern (Stripe, Meilisearch Cloud, etc.).
  \item \textbf{Datenschutzerklärung:} Detailliert, verständlich, pro Sprache/Land.
\end{itemize}


\subsection{PCI-DSS Compliance}

Da keine Kartendaten im System gespeichert oder verarbeitet werden
(Tokenisierung über Stripe/Mollie), gilt \textbf{SAQ-A} -- das niedrigste
Compliance-Level:

\begin{itemize}[leftmargin=2em]
  \item Zahlungsformulare werden als iFrames der Payment-Provider eingebettet
  \item Keine Kartendaten berühren das eigene Backend
  \item TLS 1.2+ für alle Verbindungen
  \item Regelmäßige Vulnerability-Scans
\end{itemize}


\subsection{OWASP Top 10 -- Maßnahmen}

\begin{table}[htbp]
  \centering
  \caption{Sicherheitsmaßnahmen gegen OWASP Top 10}
  \label{tab:owasp}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X}
    \toprule
    \textbf{Bedrohung} & \textbf{Maßnahme} & \textbf{Implementierung} \\
    \midrule
    Injection &
      Parameterisierte Queries, kein String-Concatenation &
      Prisma ORM (prepared statements) \\
    Broken Auth &
      Sichere Token-Verwaltung, MFA für Admin &
      JWT + Refresh-Token, Passport.js \\
    XSS &
      Output-Encoding, Content Security Policy &
      React (auto-escaping), Helmet.js \\
    CSRF &
      SameSite-Cookies, CSRF-Tokens &
      NestJS CSRF-Guard \\
    SSRF &
      URL-Validierung, Allowlist für externe Requests &
      Input-Validierung mit Zod \\
    Security Misc. &
      Security-Header, Dependency-Updates &
      Helmet.js, Dependabot/Renovate \\
    Insecure Design &
      Threat Modeling, Security Reviews &
      Architektur-Review vor Deployment \\
    Broken Access &
      RBAC, Ressourcen-basierte Autorisierung &
      NestJS Guards + CASL-Bibliothek \\
    Crypto Failures &
      Starke Hashing-Algorithmen, Verschlüsselung &
      Argon2 (Passwörter), AES-256 (PII) \\
    Logging/Monitor. &
      Zentrale Logs, Alerting bei Anomalien &
      Winston + Loki oder CloudWatch \\
    \bottomrule
  \end{tabularx}
\end{table}


\subsection{Authentifizierung \& Autorisierung}

\begin{description}[leftmargin=2em]
  \item[JWT + Refresh-Token] Access-Token (15 Min. Gültigkeit) + Refresh-Token
    (7 Tage, in httpOnly-Cookie). Token-Rotation bei jedem Refresh.
  \item[OAuth 2.0] Für API-Zugriff durch Drittanbieter. Authorization Code Flow
    mit PKCE für öffentliche Clients.
  \item[RBAC] Role-Based Access Control mit feingranularen Berechtigungen.
    Rollen: Super-Admin, Shop-Admin, Support, B2B-Admin, B2B-Einkäufer, B2B-Genehmiger.
  \item[MFA] Pflicht für Admin-Zugänge. Optional (empfohlen) für B2B-Genehmiger.
    TOTP-basiert (Google Authenticator, Authy).
\end{description}


% =============================================================================
% KAPITEL 8: OPEN-SOURCE-REFERENZARCHITEKTUREN
% =============================================================================
\newpage
\section{Open-Source-Referenzarchitekturen}
\label{sec:referenz}

Drei führende Open-Source-E-Commerce-Plattformen dienen als Referenz für
Architekturentscheidungen. Ziel ist nicht die Übernahme einer Plattform,
sondern das Lernen aus bewährten Mustern.

\begin{table}[htbp]
  \centering
  \caption{Open-Source-Referenzplattformen im Vergleich}
  \label{tab:referenz}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l X X X}
    \toprule
    \textbf{Kriterium} & \textbf{Medusa.js} & \textbf{Saleor} & \textbf{Vendure} \\
    \midrule
    Sprache &
      TypeScript (Node.js) &
      Python (Django) &
      TypeScript (NestJS) \\
    API &
      REST (+ GraphQL geplant) &
      GraphQL &
      GraphQL \\
    Datenbank &
      PostgreSQL &
      PostgreSQL &
      PostgreSQL / MySQL \\
    Architektur &
      Modular (Plugin-System) &
      Monolith (modular) &
      Plugin-basiert \\
    Multi-Currency &
      Ja (Multi-Region) &
      Ja (sehr ausgereift) &
      Ja (Plugin) \\
    B2B-Support &
      Begrenzt (Custom) &
      Begrenzt (Extension) &
      Plugin möglich \\
    Admin-Panel &
      Eigenes (React) &
      Dashboard (React) &
      Angular Admin UI \\
    GitHub-Stars &
      $\sim$31K &
      $\sim$21K &
      $\sim$6K \\
    \midrule
    \textbf{Stärken} &
      Erweiterbarkeit, DX,
      größte Community &
      Multi-Channel, GraphQL,
      i18n out-of-the-box &
      Saubere NestJS-Architektur,
      Type-Safety \\
    \textbf{Schwächen} &
      Weniger Features als Saleor,
      B2B braucht Custom-Code &
      Python (anderer Stack),
      kleinere Community &
      Kleinste Community,
      Angular-Admin \\
    \textbf{Relevanz} &
      \textbf{Hoch} -- gleicher Stack &
      Mittel -- Architektur-Referenz &
      \textbf{Hoch} -- NestJS-Referenz \\
    \bottomrule
  \end{tabularx}
\end{table}


\subsection{Learnings für unser System}

\begin{description}[leftmargin=2em]
  \item[Von Medusa.js lernen:]
    Modulares Plugin-System, bei dem jedes Modul (Produkte, Bestellungen, Zahlungen)
    unabhängig ersetzt werden kann. Multi-Region-Konzept für länderspezifische
    Einstellungen (Währung, Steuern, Lager).

  \item[Von Saleor lernen:]
    GraphQL-Schema-Design für E-Commerce. Ausgereifte Multi-Currency/Multi-Language-Implementierung.
    Channel-basiertes Multi-Store-Konzept.

  \item[Von Vendure lernen:]
    NestJS-spezifische Patterns: Dependency Injection für Service-Layer,
    Custom Decorators für Autorisierung, Event-Bus für lose Kopplung.
    State-Machine für Bestellstatus.
\end{description}

\textbf{Wichtig:} Keine dieser Plattformen als Fork übernehmen. Die Abweichung
von der Upstream-Codebasis macht Updates nach 3--6 Monaten praktisch unmöglich.
Stattdessen: eigenes System bauen, Patterns und API-Design als Referenz nutzen.


% =============================================================================
% KAPITEL 9: ARCHITEKTUR-ÜBERSICHT
% =============================================================================
\newpage
\section{Architektur-Übersicht}
\label{sec:architektur}

\subsection{Architekturansatz: Modularer Monolith}

Das System startet als \textbf{modularer Monolith} -- ein einzelnes Deployment
mit klar getrennten internen Modulen. Dieser Ansatz kombiniert:

\begin{itemize}[leftmargin=2em]
  \item \textbf{Einfachheit eines Monolithen:} Ein Deployment, ein Repository,
    einfaches Debugging, keine Netzwerk-Latenz zwischen Modulen
  \item \textbf{Modularität für spätere Zerlegung:} Jedes Modul hat klare Grenzen
    (eigenes Interface, eigene DTOs), sodass es bei Bedarf als Microservice
    extrahiert werden kann
\end{itemize}

\textbf{Kein Microservice-Start!} Microservices verursachen bei kleinen Teams
mehr Overhead als Nutzen (Network Calls, Distributed Tracing, Service Discovery,
Deployment-Komplexität). Die Zerlegung erfolgt erst bei konkretem Bedarf.


\subsection{System-Komponenten}

\begin{table}[htbp]
  \centering
  \caption{Architektur-Komponenten}
  \label{tab:architektur}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l l X}
    \toprule
    \textbf{Komponente} & \textbf{Technologie} & \textbf{Verantwortlichkeit} \\
    \midrule
    API-Server &
      NestJS &
      REST-Endpunkte, Middleware, Guards, Validierung \\
    Produkt-Modul &
      NestJS Module &
      Katalog, Varianten, Kategorien, Attribute, Suche \\
    Bestell-Modul &
      NestJS Module &
      Cart, Checkout, Bestellungen, Status-Workflow \\
    Zahlungs-Modul &
      NestJS Module &
      Provider-Abstraktion (Strategy Pattern), Webhooks \\
    Kunden-Modul &
      NestJS Module &
      Auth, Profile, Firmenkonten, Rollen \\
    B2B-Modul &
      NestJS Module &
      Preislisten, Genehmigungen, Zahlungsbedingungen \\
    Versand-Modul &
      NestJS Module &
      Carrier-Integration, Tracking, Etiketten \\
    Such-Service &
      Meilisearch &
      Produkt-Indexierung und -Abfragen \\
    Cache-Layer &
      Redis &
      Sessions, Warenkörbe, Rate-Limiting, Caching \\
    Job-Queue &
      BullMQ (Redis) &
      E-Mails, Import/Export, Bildverarbeitung \\
    Datei-Speicher &
      S3 / MinIO &
      Produktbilder, Dokumente, Exporte \\
    Event-Bus &
      NestJS EventEmitter &
      Lose Kopplung zwischen Modulen \\
    \bottomrule
  \end{tabularx}
\end{table}


\subsection{API-Design}

\textbf{Primär: REST API} mit klarer Ressourcen-Struktur:

\begin{lstlisting}
GET    /api/v1/products          # Produktliste (paginiert, filterbar)
GET    /api/v1/products/:id      # Produktdetails
POST   /api/v1/cart/items        # Artikel zum Warenkorb hinzufuegen
POST   /api/v1/checkout          # Checkout starten
GET    /api/v1/orders            # Bestellhistorie
POST   /api/v1/orders/:id/return # Retoure anfragen
\end{lstlisting}

\textbf{Optional: GraphQL} als zweiter Endpunkt für Frontend-Entwickler,
die flexiblere Abfragen benötigen (z.B. Produktseite mit Reviews,
Related Products und Inventory in einem Request).

\textbf{Webhooks} für asynchrone Events:
\begin{lstlisting}
POST /webhooks/stripe        # Stripe-Zahlungsbestaetigung
POST /webhooks/shipping      # Carrier-Tracking-Updates
\end{lstlisting}


\subsection{Datenbank-Schema (Kernentitäten)}

\begin{lstlisting}
Produkt          1 --- N  Variante
Produkt          N --- M  Kategorie
Variante         1 --- N  Lagereintrag (pro Lagerort)
Kunde            1 --- N  Adresse
Kunde            1 --- N  Bestellung
Kunde            N --- 1  Firma (B2B)
Firma            1 --- N  Mitarbeiter (Kunde mit Rolle)
Bestellung       1 --- N  Bestellposition
Bestellung       1 --- 1  Zahlung
Bestellung       1 --- N  Versand
Bestellung       1 --- N  Rechnung
Preisliste       N --- M  Kundengruppe
Preisliste       1 --- N  Preislisteneintrag (Produkt + Preis)
\end{lstlisting}


\subsection{Event-Driven Architecture}

Module kommunizieren über Events statt direkter Aufrufe:

\begin{lstlisting}
order.created     -> E-Mail-Service (Bestellbestaetigung senden)
order.created     -> Inventar-Service (Bestand reservieren)
payment.confirmed -> Bestell-Service (Status aktualisieren)
order.shipped     -> E-Mail-Service (Versandbestaetigung senden)
order.shipped     -> Tracking-Service (Tracking-Updates starten)
\end{lstlisting}

\textbf{Vorteil:} Module kennen einander nicht direkt. Neue Features
(z.B. Analytics, Loyalty-Punkte) können als Listener hinzugefügt werden,
ohne bestehenden Code zu ändern.


\subsection{Caching-Strategie}

\begin{description}[leftmargin=2em]
  \item[Produktkatalog] Redis-Cache mit TTL (5--15 Min.), Invalidierung bei Admin-Änderung
  \item[Warenkorb] Redis mit Session-ID als Key. TTL: 7 Tage (Gast), unbegrenzt (eingeloggt)
  \item[Suchergebnisse] Meilisearch hat eigenes Caching. Zusätzlich CDN-Caching für häufige Queries
  \item[Seitencaching] Next.js ISR für Produktseiten, Kategorieseiten, Blog-Beiträge
  \item[API-Responses] ETag-basiertes Caching für unveränderliche Ressourcen
\end{description}


% =============================================================================
% KAPITEL 10: ZUSAMMENFASSUNG & EMPFEHLUNG
% =============================================================================
\newpage
\section{Zusammenfassung \& Empfehlung}
\label{sec:zusammenfassung}

\subsection{Empfohlener Stack (Zusammenfassung)}

\begin{center}
\colorbox{stackhighlight}{%
  \parbox{0.92\textwidth}{%
    \textbf{Backend:} NestJS + TypeScript + Prisma + PostgreSQL \\
    \textbf{Frontend:} Next.js + React + TypeScript \\
    \textbf{Admin:} Next.js + React (separates Deployment) \\
    \textbf{Suche:} Meilisearch \quad \textbf{Cache:} Redis \quad \textbf{Queue:} BullMQ \\
    \textbf{Zahlungen:} Stripe (primär) + Mollie (EU) \\
    \textbf{Deployment:} Docker Compose + GitHub Actions + Cloudflare CDN
  }%
}
\end{center}


\subsection{Phasenplan}

\begin{table}[htbp]
  \centering
  \caption{Implementierungs-Phasenplan}
  \label{tab:phasen}
  \rowcolors{2}{gray!8}{white}
  \small
  \begin{tabularx}{\textwidth}{l l X l}
    \toprule
    \textbf{Phase} & \textbf{Zeitraum} & \textbf{Features} & \textbf{Team} \\
    \midrule
    Phase 1 (MVP) &
      Monat 1--6 &
      Alle Pflicht-Features (P01--P13):
      Produktverwaltung, Auth, Cart/Checkout, Bestellungen, Zahlungen,
      Versand, Steuern, Sicherheit, Suche, Responsive Design,
      i18n, Multi-Currency, Admin-Panel &
      3--4 Entwickler \\
    Phase 2 &
      Monat 7--12 &
      Priorisierte Soll-Features:
      B2B-Preisgestaltung (S01), Erweiterte Suche (S02),
      Rabatte (S03), E-Mail-Benachrichtigungen (S06),
      SEO (S07), Analytics (S08), API (S12) &
      3--5 Entwickler \\
    Phase 3 &
      Ab Monat 13 &
      Verbleibende Soll-Features (S04, S05, S09--S11)
      und bedarfsgesteuerte Kann-Features (K01--K11) &
      4--6 Entwickler \\
    \bottomrule
  \end{tabularx}
\end{table}


\subsection{Nächste Schritte}

Nach Genehmigung dieses Analysedokuments folgen:

\begin{enumerate}[leftmargin=2em]
  \item \textbf{Detaillierte technische Spezifikation} -- Datenbankschema,
    API-Endpunkte, Modulstruktur
  \item \textbf{UI/UX-Design} -- Wireframes und Prototypen für Shop, Checkout, Admin
  \item \textbf{Projektsetup} -- Repository, CI/CD-Pipeline, Docker-Konfiguration,
    Coding-Standards, Linting
  \item \textbf{Sprint-Planung} -- Aufgaben für Phase 1 in 2-Wochen-Sprints aufteilen
  \item \textbf{Infrastruktur} -- Hosting einrichten, Datenbank provisionieren,
    Staging-Umgebung deployen
\end{enumerate}


% =============================================================================
\end{document}
