# Requirements Document

## Introduction

Funktionsfähiges Email-Sortierer Produkt mit Multi-Step-Formular, Appwrite-Datenspeicherung und Stripe-Bezahlung.

## Glossary

- **System**: Das Email-Sortierer Web-Applikation
- **Appwrite**: Backend-as-a-Service für Datenspeicherung
- **Stripe**: Zahlungsanbieter
- **Submission**: Kundenantworten auf Fragebogen

## Requirements

### Requirement 1: Multi-Step Formular

**User Story:** Als Kunde möchte ich durch einen mehrstufigen Fragebogen geführt werden, damit ich meine Email-Präferenzen konfigurieren kann.

#### Acceptance Criteria

1. WHEN die Seite geladen wird, THEN THE System SHALL die Fragen von Appwrite laden
2. WHEN ein Schritt ausgefüllt wird, THEN THE System SHALL die Antworten zwischenspeichern
3. WHEN alle Schritte abgeschlossen sind, THEN THE System SHALL eine Zusammenfassung anzeigen
4. WHEN Pflichtfelder leer sind, THEN THE System SHALL eine Validierungsfehlermeldung anzeigen

### Requirement 2: Appwrite Datenspeicherung

**User Story:** Als System möchte ich alle Kundendaten in Appwrite speichern, damit die Daten persistent verfügbar sind.

#### Acceptance Criteria

1. WHEN das Bootstrap-Script läuft, THEN THE System SHALL alle Tabellen und Spalten erstellen
2. WHEN ein Kunde den Fragebogen abschließt, THEN THE System SHALL eine Submission erstellen
3. WHEN eine Submission erstellt wird, THEN THE System SHALL alle Antworten speichern
4. WHEN Fragen abgerufen werden, THEN THE System SHALL nur aktive Fragen für das Produkt zurückgeben

### Requirement 3: Stripe Bezahlung

**User Story:** Als Kunde möchte ich nach dem Fragebogen bezahlen können, damit ich das Produkt kaufen kann.

#### Acceptance Criteria

1. WHEN der Kunde auf "Jetzt kaufen" klickt, THEN THE System SHALL eine Stripe Checkout Session erstellen
2. WHEN die Checkout Session erstellt wird, THEN THE System SHALL den Kunden zu Stripe weiterleiten
3. WHEN die Bezahlung erfolgreich ist, THEN THE System SHALL den Submission-Status auf "paid" aktualisieren
4. WHEN der Stripe Webhook empfangen wird, THEN THE System SHALL die Signatur validieren

### Requirement 4: Server Setup

**User Story:** Als Entwickler möchte ich den Server starten können, damit die Applikation läuft.

#### Acceptance Criteria

1. WHEN der Server startet, THEN THE System SHALL auf Port 3000 lauschen
2. WHEN die HTML-Datei angefordert wird, THEN THE System SHALL die statische Datei ausliefern
3. WHEN API-Endpunkte aufgerufen werden, THEN THE System SHALL JSON-Antworten zurückgeben
4. WHEN Umgebungsvariablen fehlen, THEN THE System SHALL einen Fehler ausgeben
