-
+
+
{error || 'Der Verifizierungslink ist ungültig oder abgelaufen.'}
-
+
Falls dein Link abgelaufen ist, kannst du eine neue Verifizierungs-E-Mail anfordern.
@@ -142,9 +142,9 @@ export function VerifyEmail() {
{/* Help text */}
-
+
Probleme? Kontaktiere uns unter{' '}
-
+
support@emailsorter.de
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..ac5a4f1
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,60 @@
+# Dokumentation
+
+Diese Dokumentation ist in verschiedene Kategorien unterteilt:
+
+## 📁 Struktur
+
+```
+docs/
+├── setup/ # Setup-Anleitungen
+├── deployment/ # Deployment & Production
+├── development/ # Development-Dokumentation
+├── server/ # Server-spezifische Docs
+├── examples/ # Beispiel-Code
+└── legacy/ # Legacy-Dateien
+```
+
+## 📚 Kategorien
+
+### Setup (`docs/setup/`)
+- **APPWRITE_SETUP.md** - Appwrite Installation & Konfiguration
+- **APPWRITE_CORS_SETUP.md** - CORS-Konfiguration für Appwrite
+- **GOOGLE_OAUTH_SETUP.md** - Google OAuth Setup
+- **SETUP_GUIDE.md** - Allgemeine Setup-Anleitung
+- **FAVICON_SETUP.md** - Favicon-Konfiguration
+
+### Deployment (`docs/deployment/`)
+- **README.md** - Deployment-Übersicht
+- **GITEA_WEBHOOK_SETUP.md** - Vollständige Anleitung für automatisches Deployment via Gitea Webhook
+- **WEBHOOK_QUICK_START.md** - Schnellstart-Anleitung (5 Minuten)
+- **WEBHOOK_AUTHORIZATION.md** - Webhook-Authentifizierung und Sicherheit
+- **PRODUCTION_SETUP.md** - Production-Server Setup
+- **PRODUCTION_FIXES.md** - Production-Fixes & Troubleshooting
+- **DEPLOYMENT_INSTRUCTIONS.md** - Manuelle Deployment-Anleitungen
+
+### Development (`docs/development/`)
+- **GIT_AUTHENTICATION_FIX.md** - Git-Authentifizierung
+- **PROJECT_RENAME_GUIDE.md** - Projekt-Umbenennung
+- **PROJECT_REVIEW_SUMMARY.md** - Projekt-Review
+- **TASK_5_COMPLETION.md** - Task-Completion-Dokumentation
+- **TESTING_SUMMARY.md** - Testing-Zusammenfassung
+
+### Server (`docs/server/`)
+- **CORRECTNESS_VALIDATION.md** - Korrektheits-Validierung
+- **E2E_TEST_GUIDE.md** - End-to-End Test Guide
+- **ENDPOINT_VERIFICATION.md** - API-Endpoint-Verifikation
+- **FRONTEND_VERIFICATION.md** - Frontend-Verifikation
+- **MANUAL_TEST_CHECKLIST.md** - Manuelle Test-Checkliste
+- **TASK_4_COMPLETION_SUMMARY.md** - Task 4 Completion
+
+### Examples (`docs/examples/`)
+- **starter-for-react/** - React Starter Template (Beispiel)
+
+### Legacy (`docs/legacy/`)
+- **public/** - Alte Public-Dateien (falls noch benötigt)
+
+## 🚀 Schnellstart
+
+1. **Erstes Setup:** Siehe `docs/setup/SETUP_GUIDE.md`
+2. **Production Deployment:** Siehe `docs/deployment/PRODUCTION_SETUP.md`
+3. **Development:** Siehe `docs/development/` für Development-Dokumentation
diff --git a/DEPLOYMENT_INSTRUCTIONS.md b/docs/deployment/DEPLOYMENT_INSTRUCTIONS.md
similarity index 100%
rename from DEPLOYMENT_INSTRUCTIONS.md
rename to docs/deployment/DEPLOYMENT_INSTRUCTIONS.md
diff --git a/docs/deployment/GITEA_WEBHOOK_SETUP.md b/docs/deployment/GITEA_WEBHOOK_SETUP.md
new file mode 100644
index 0000000..7009aa6
--- /dev/null
+++ b/docs/deployment/GITEA_WEBHOOK_SETUP.md
@@ -0,0 +1,219 @@
+# Gitea Webhook Setup - Automatisches Deployment
+
+Diese Anleitung erklärt, wie du einen Gitea-Webhook einrichtest, um automatisch zu deployen, wenn Code gepusht wird.
+
+## Übersicht
+
+Der Webhook funktioniert folgendermaßen:
+1. **Push auf Gitea** → Gitea sendet Webhook-Event an deinen Server
+2. **Webhook-Handler** empfängt das Event und verifiziert die Signatur
+3. **Deployment-Skript** wird ausgeführt:
+ - Git Pull (falls auf Server)
+ - Frontend Build (`npm run build`)
+ - Upload auf Production-Server (via SCP/SSH)
+ - Backend Neustart (optional, via PM2)
+
+## Voraussetzungen
+
+- ✅ Gitea-Repository mit deinem Code
+- ✅ Production-Server mit SSH-Zugriff
+- ✅ Node.js auf dem Server installiert
+- ✅ PM2 installiert (optional, für Backend-Neustart)
+
+## Schritt 1: Webhook-Secret generieren
+
+Generiere ein sicheres Secret für die Webhook-Signatur-Verification:
+
+```bash
+# Generiere ein zufälliges Secret (32 Zeichen)
+node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
+```
+
+**Wichtig:** Speichere dieses Secret sicher - du brauchst es in Schritt 3 und 4.
+
+## Schritt 2: Environment Variables konfigurieren
+
+Füge folgende Variablen zu deiner `server/.env` Datei hinzu:
+
+```bash
+# Gitea Webhook Secret (aus Schritt 1)
+GITEA_WEBHOOK_SECRET=dein_generiertes_secret_hier
+
+# Optional: Authorization Header Token
+GITEA_WEBHOOK_AUTH_TOKEN=dein_auth_token_hier
+
+# Server-Deployment (optional, nur wenn automatischer Upload gewünscht)
+DEPLOY_SERVER_HOST=91.99.156.85
+DEPLOY_SERVER_USER=root
+DEPLOY_SERVER_PATH=/var/www/emailsorter
+DEPLOY_SSH_KEY=/path/to/ssh/private/key # Optional, falls SSH-Key benötigt wird
+DEPLOY_FRONTEND_PATH=/var/www/emailsorter/client/dist
+DEPLOY_BACKEND_PATH=/var/www/emailsorter/server
+
+# PM2 für Backend-Neustart (optional)
+USE_PM2=true
+```
+
+## Schritt 3: Webhook in Gitea konfigurieren
+
+1. **Öffne dein Repository** in Gitea
+2. Gehe zu **Settings** → **Webhooks**
+3. Klicke auf **Add Webhook** → **Gitea**
+4. Fülle die Felder aus:
+
+ - **Target URL:**
+ ```
+ https://emailsorter.webklar.com/api/webhook/gitea
+ ```
+ (Ersetze mit deiner tatsächlichen Domain)
+
+ - **HTTP Method:** `POST`
+
+ - **Post Content Type:** `application/json`
+
+ - **Secret:**
+ ```
+ dein_generiertes_secret_hier
+ ```
+ (Das gleiche Secret wie in Schritt 1)
+
+ - **Authorization Header:** (Optional)
+ ```
+ Bearer dein_auth_token_hier
+ ```
+
+ - **Trigger On:**
+ - ✅ **Push Events** (wichtig!)
+ - Optional: **Create**, **Delete** (falls gewünscht)
+
+ - **Branch Filter:** `main` oder `master` (je nach deinem Standard-Branch)
+
+5. Klicke auf **Add Webhook**
+
+## Schritt 4: Webhook testen
+
+### Option A: Test über Gitea UI
+
+1. Gehe zurück zu **Settings** → **Webhooks**
+2. Klicke auf deinen Webhook
+3. Klicke auf **Test Delivery** → **Push Events**
+4. Prüfe die Antwort:
+ - ✅ **Status 202** = Webhook empfangen, Deployment gestartet
+ - ❌ **Status 401** = Secret falsch
+ - ❌ **Status 500** = Server-Fehler (prüfe Server-Logs)
+
+### Option B: Test über Git Push
+
+1. Mache eine kleine Änderung (z.B. Kommentar in einer Datei)
+2. Committe und pushe:
+ ```bash
+ git add .
+ git commit -m "test: Webhook test"
+ git push
+ ```
+3. Prüfe die Server-Logs:
+ ```bash
+ # Auf dem Server
+ pm2 logs emailsorter-backend
+ # Oder
+ tail -f /var/log/emailsorter/webhook.log
+ ```
+4. Du solltest sehen:
+ ```
+ 📥 Gitea Webhook empfangen
+ 🚀 Starte Deployment...
+ 📦 Baue Frontend...
+ ✅ Deployment erfolgreich abgeschlossen
+ ```
+
+## Schritt 5: Deployment-Logs prüfen
+
+Die Webhook-Handler loggen alle Schritte. Prüfe die Logs:
+
+```bash
+# PM2 Logs
+pm2 logs emailsorter-backend
+
+# Oder direkt im Server
+tail -f server/logs/webhook.log
+```
+
+## Fehlerbehebung
+
+### Webhook wird nicht ausgelöst
+
+- ✅ Prüfe, ob die **Target URL** korrekt ist
+- ✅ Prüfe, ob der Server erreichbar ist (`curl https://emailsorter.webklar.com/api/webhook/status`)
+- ✅ Prüfe Gitea-Logs: **Settings** → **Webhooks** → **Delivery Log**
+
+### "Ungültige Webhook-Signatur" (401)
+
+- ✅ Prüfe, ob `GITEA_WEBHOOK_SECRET` in `server/.env` gesetzt ist
+- ✅ Prüfe, ob das Secret in Gitea **genau gleich** ist (keine Leerzeichen!)
+- ✅ Prüfe, ob der Webhook **"application/json"** als Content-Type verwendet
+
+### Deployment schlägt fehl
+
+- ✅ Prüfe Server-Logs für detaillierte Fehlermeldungen
+- ✅ Prüfe, ob SSH-Zugriff funktioniert: `ssh root@91.99.156.85`
+- ✅ Prüfe, ob `npm` und `node` auf dem Server installiert sind
+- ✅ Prüfe, ob die Pfade (`DEPLOY_SERVER_PATH`) korrekt sind
+
+### Frontend-Build fehlgeschlagen
+
+- ✅ Prüfe, ob alle Dependencies installiert sind: `cd client && npm install`
+- ✅ Prüfe, ob `.env.production` korrekt konfiguriert ist
+- ✅ Prüfe Build-Logs für TypeScript/ESLint-Fehler
+
+### Backend startet nicht neu
+
+- ✅ Prüfe, ob PM2 installiert ist: `pm2 --version`
+- ✅ Prüfe, ob `USE_PM2=true` in `.env` gesetzt ist
+- ✅ Prüfe PM2-Status: `pm2 list`
+
+## Sicherheit
+
+### Best Practices
+
+1. **Webhook-Secret:** Verwende immer ein starkes, zufälliges Secret
+2. **HTTPS:** Stelle sicher, dass dein Server HTTPS verwendet (Let's Encrypt)
+3. **Firewall:** Beschränke Webhook-Endpoint auf Gitea-IPs (optional)
+4. **Rate Limiting:** Der Webhook-Endpoint ist bereits rate-limited
+5. **Logs:** Prüfe regelmäßig die Webhook-Logs auf verdächtige Aktivitäten
+
+## Alternative: Lokales Deployment ohne Server-Upload
+
+Falls du den automatischen Upload auf den Server nicht möchtest, kannst du:
+
+1. `DEPLOY_SERVER_HOST` **nicht** setzen
+2. Das Deployment-Skript erstellt nur den Build lokal
+3. Du lädst die Dateien manuell hoch oder verwendest ein anderes Tool
+
+Der Webhook wird trotzdem ausgelöst und erstellt den Build, aber überspringt den Upload-Schritt.
+
+## Manuelles Deployment auslösen
+
+Du kannst das Deployment auch manuell auslösen:
+
+```bash
+# Auf dem Server
+cd /var/www/emailsorter
+node scripts/deploy-to-server.mjs
+```
+
+## Nächste Schritte
+
+Nach erfolgreichem Setup:
+
+1. ✅ Teste den Webhook mit einem kleinen Push
+2. ✅ Prüfe, ob die Website aktualisiert wurde
+3. ✅ Überwache die Logs für die ersten Deployments
+4. ✅ Dokumentiere deine spezifische Konfiguration
+
+## Support
+
+Bei Problemen:
+- Prüfe die Server-Logs
+- Prüfe Gitea Webhook Delivery Logs
+- Prüfe die Environment Variables
+- Teste SSH-Verbindung manuell
diff --git a/docs/deployment/PRODUCTION_FIXES.md b/docs/deployment/PRODUCTION_FIXES.md
new file mode 100644
index 0000000..cdf5e09
--- /dev/null
+++ b/docs/deployment/PRODUCTION_FIXES.md
@@ -0,0 +1,51 @@
+# Production Fixes - Wichtige Schritte
+
+## ✅ Behoben
+
+1. **Debug-Logs entfernt** - Alle Debug-Logs zu `127.0.0.1:7242` wurden entfernt
+2. **Favicon-Problem behoben** - `site.webmanifest` verwendet jetzt vorhandene SVG-Dateien
+
+## ⚠️ Noch zu beheben (im Appwrite Dashboard)
+
+### 1. Appwrite CORS-Konfiguration
+
+**Problem:** Appwrite erlaubt nur `https://localhost` statt `https://emailsorter.webklar.com`
+
+**Lösung:**
+1. Gehe zu: https://appwrite.webklar.com
+2. Öffne dein Projekt
+3. Gehe zu **Settings** → **Platforms** (oder **Web**)
+4. Füge eine neue Platform hinzu:
+ - **Name:** Production
+ - **Hostname:** `emailsorter.webklar.com`
+ - **Origin:** `https://emailsorter.webklar.com`
+5. Speichere die Änderungen
+
+**ODER** bearbeite die existierende Platform und ändere den Hostname/Origin zu `https://emailsorter.webklar.com`
+
+### 2. Backend-Server (502 Bad Gateway)
+
+**Problem:** `/api/analytics/track` gibt 502 zurück - Backend-Server läuft nicht
+
+**Lösung:**
+1. SSH zum Server: `ssh user@webklar.com`
+2. Prüfe ob Server läuft: `pm2 list` oder `ps aux | grep node`
+3. Falls nicht: Starte den Server:
+ ```bash
+ cd /path/to/ANDJJJJJJ/server
+ pm2 start index.mjs --name emailsorter-api
+ pm2 save
+ ```
+4. Prüfe Logs: `pm2 logs emailsorter-api`
+
+### 3. Build deployen
+
+Nach dem Commit und Push:
+1. Kopiere den Inhalt von `client/dist` auf den Web-Server
+2. Stelle sicher, dass die Dateien unter `https://emailsorter.webklar.com` erreichbar sind
+
+## Nach allen Fixes
+
+1. Leere den Browser-Cache (Strg+Shift+R)
+2. Teste die Website
+3. Prüfe die Browser-Konsole - sollte keine Fehler mehr zeigen
diff --git a/PRODUCTION_SETUP.md b/docs/deployment/PRODUCTION_SETUP.md
similarity index 100%
rename from PRODUCTION_SETUP.md
rename to docs/deployment/PRODUCTION_SETUP.md
diff --git a/docs/deployment/README.md b/docs/deployment/README.md
new file mode 100644
index 0000000..0387305
--- /dev/null
+++ b/docs/deployment/README.md
@@ -0,0 +1,60 @@
+# Deployment-Dokumentation
+
+Diese Dokumentation beschreibt alle Aspekte des Deployments für E-Mail-Sorter.
+
+## 📚 Inhaltsverzeichnis
+
+### Automatisches Deployment
+
+- **[Gitea Webhook Setup](./GITEA_WEBHOOK_SETUP.md)** - Vollständige Anleitung für automatisches Deployment via Gitea Webhook
+- **[Webhook Quick Start](./WEBHOOK_QUICK_START.md)** - Schnellstart-Anleitung (5 Minuten)
+- **[Webhook Authorization](./WEBHOOK_AUTHORIZATION.md)** - Authentifizierung und Sicherheit
+
+### Manuelles Deployment
+
+- **[Deployment Instructions](./DEPLOYMENT_INSTRUCTIONS.md)** - Manuelle Deployment-Schritte
+- **[Production Setup](./PRODUCTION_SETUP.md)** - Production-Server Setup
+- **[Production Fixes](./PRODUCTION_FIXES.md)** - Bekannte Probleme und Lösungen
+
+## 🚀 Schnellstart
+
+Für automatisches Deployment siehe [Webhook Quick Start](./WEBHOOK_QUICK_START.md).
+
+## 📋 Übersicht
+
+### Automatisches Deployment (Empfohlen)
+
+1. **Gitea Webhook einrichten** → Siehe [GITEA_WEBHOOK_SETUP.md](./GITEA_WEBHOOK_SETUP.md)
+2. **Bei jedem Push** wird automatisch deployed
+3. **Keine manuellen Schritte** nötig
+
+### Manuelles Deployment
+
+1. **Frontend bauen:** `cd client && npm run build`
+2. **Dateien hochladen** auf Server
+3. **Backend neustarten** (falls nötig)
+
+Siehe [DEPLOYMENT_INSTRUCTIONS.md](./DEPLOYMENT_INSTRUCTIONS.md) für Details.
+
+## 🔧 Konfiguration
+
+Alle Deployment-Konfigurationen finden sich in `server/.env`:
+
+```bash
+# Webhook-Konfiguration
+GITEA_WEBHOOK_SECRET=...
+GITEA_WEBHOOK_AUTH_TOKEN=...
+
+# Server-Deployment
+DEPLOY_SERVER_HOST=91.99.156.85
+DEPLOY_SERVER_USER=root
+DEPLOY_SERVER_PATH=/var/www/emailsorter
+USE_PM2=true
+```
+
+## 📞 Support
+
+Bei Problemen:
+1. Prüfe die Server-Logs
+2. Siehe [Production Fixes](./PRODUCTION_FIXES.md)
+3. Prüfe Webhook Delivery Logs in Gitea
diff --git a/docs/deployment/WEBHOOK_AUTHORIZATION.md b/docs/deployment/WEBHOOK_AUTHORIZATION.md
new file mode 100644
index 0000000..8276f82
--- /dev/null
+++ b/docs/deployment/WEBHOOK_AUTHORIZATION.md
@@ -0,0 +1,83 @@
+# Webhook Authorization Header - Anleitung
+
+Der Webhook unterstützt **zwei Authentifizierungsmethoden**:
+
+1. **Signature-Verification** (Standard, von Gitea)
+2. **Authorization Header** (Optional, zusätzliche Sicherheit)
+
+## Option 1: Nur Signature (Standard)
+
+Das ist die Standard-Methode, die Gitea automatisch verwendet:
+
+### Konfiguration
+
+In `server/.env`:
+```bash
+GITEA_WEBHOOK_SECRET=dein_secret_hier
+```
+
+### In Gitea
+
+- **Secret:** Trage das gleiche Secret ein
+- **Authorization Header:** Nicht nötig
+
+Gitea sendet automatisch den `X-Gitea-Signature` Header.
+
+## Option 2: Authorization Header (Zusätzliche Sicherheit)
+
+Falls du zusätzliche Sicherheit möchtest oder den Webhook manuell aufrufst:
+
+### Schritt 1: Token generieren
+
+```bash
+node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
+```
+
+### Schritt 2: Server konfigurieren
+
+In `server/.env`:
+```bash
+GITEA_WEBHOOK_SECRET=dein_secret_hier
+GITEA_WEBHOOK_AUTH_TOKEN=dein_auth_token_hier
+```
+
+### Schritt 3: In Gitea konfigurieren
+
+Gitea unterstützt **keine** Authorization Header direkt, aber du kannst:
+
+#### Option A: Nur Signature verwenden (empfohlen)
+- Lass `GITEA_WEBHOOK_AUTH_TOKEN` leer
+- Nur `GITEA_WEBHOOK_SECRET` verwenden
+
+#### Option B: Manuelle Webhook-Aufrufe
+Wenn du den Webhook manuell aufrufst (z.B. via curl), verwende:
+
+```bash
+curl -X POST https://emailsorter.webklar.com/api/webhook/gitea \
+ -H "Content-Type: application/json" \
+ -H "X-Gitea-Signature: sha256=..." \
+ -H "Authorization: Bearer dein_auth_token_hier" \
+ -d '{"ref":"refs/heads/main",...}'
+```
+
+## Option 3: Beide Methoden kombinieren
+
+Für maximale Sicherheit kannst du beide verwenden:
+
+```bash
+# In server/.env
+GITEA_WEBHOOK_SECRET=secret_fuer_signature
+GITEA_WEBHOOK_AUTH_TOKEN=token_fuer_auth_header
+```
+
+**Verhalten:**
+- Wenn beide gesetzt sind, müssen **beide** passen
+- Wenn nur eine gesetzt ist, reicht diese
+
+## Empfehlung
+
+**Für Gitea-Webhooks:** Verwende nur `GITEA_WEBHOOK_SECRET` (Signature)
+
+**Für manuelle Aufrufe:** Verwende `GITEA_WEBHOOK_AUTH_TOKEN` (Authorization Header)
+
+**Für maximale Sicherheit:** Verwende beide
diff --git a/docs/deployment/WEBHOOK_QUICK_START.md b/docs/deployment/WEBHOOK_QUICK_START.md
new file mode 100644
index 0000000..9fefc21
--- /dev/null
+++ b/docs/deployment/WEBHOOK_QUICK_START.md
@@ -0,0 +1,61 @@
+# Gitea Webhook - Quick Start Guide
+
+## 🚀 Schnellstart (5 Minuten)
+
+### Schritt 1: Secret generieren
+
+```bash
+node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
+```
+
+Kopiere das generierte Secret - du brauchst es gleich!
+
+### Schritt 2: Server konfigurieren
+
+Füge zu `server/.env` hinzu:
+
+```bash
+GITEA_WEBHOOK_SECRET=dein_generiertes_secret_hier
+DEPLOY_SERVER_HOST=91.99.156.85
+DEPLOY_SERVER_USER=root
+DEPLOY_SERVER_PATH=/var/www/emailsorter
+USE_PM2=true
+```
+
+### Schritt 3: Gitea Webhook einrichten
+
+1. Gehe zu deinem Repository → **Settings** → **Webhooks**
+2. Klicke **Add Webhook** → **Gitea**
+3. Fülle aus:
+ - **Target URL:** `https://emailsorter.webklar.com/api/webhook/gitea`
+ - **Secret:** `dein_generiertes_secret_hier` (aus Schritt 1)
+ - **Trigger On:** ✅ **Push Events**
+ - **Branch Filter:** `main` oder `master`
+4. Klicke **Add Webhook**
+
+### Schritt 4: Testen
+
+```bash
+git add .
+git commit -m "test: Webhook test"
+git push
+```
+
+Prüfe die Server-Logs - du solltest sehen:
+```
+📥 Gitea Webhook empfangen
+🚀 Starte Deployment...
+✅ Deployment erfolgreich abgeschlossen
+```
+
+## ✅ Fertig!
+
+Jetzt wird bei jedem Push automatisch deployed!
+
+## 📚 Weitere Informationen
+
+Siehe [GITEA_WEBHOOK_SETUP.md](./GITEA_WEBHOOK_SETUP.md) für:
+- Detaillierte Anleitung
+- Fehlerbehebung
+- Sicherheitsbest Practices
+- Server-Upload Konfiguration
diff --git a/GIT_AUTHENTICATION_FIX.md b/docs/development/GIT_AUTHENTICATION_FIX.md
similarity index 100%
rename from GIT_AUTHENTICATION_FIX.md
rename to docs/development/GIT_AUTHENTICATION_FIX.md
diff --git a/PROJECT_RENAME_GUIDE.md b/docs/development/PROJECT_RENAME_GUIDE.md
similarity index 100%
rename from PROJECT_RENAME_GUIDE.md
rename to docs/development/PROJECT_RENAME_GUIDE.md
diff --git a/PROJECT_REVIEW_SUMMARY.md b/docs/development/PROJECT_REVIEW_SUMMARY.md
similarity index 100%
rename from PROJECT_REVIEW_SUMMARY.md
rename to docs/development/PROJECT_REVIEW_SUMMARY.md
diff --git a/TASK_5_COMPLETION.md b/docs/development/TASK_5_COMPLETION.md
similarity index 100%
rename from TASK_5_COMPLETION.md
rename to docs/development/TASK_5_COMPLETION.md
diff --git a/TESTING_SUMMARY.md b/docs/development/TESTING_SUMMARY.md
similarity index 100%
rename from TESTING_SUMMARY.md
rename to docs/development/TESTING_SUMMARY.md
diff --git a/starter-for-react/.env.example b/docs/examples/.env.example
similarity index 100%
rename from starter-for-react/.env.example
rename to docs/examples/.env.example
diff --git a/starter-for-react/.gitignore b/docs/examples/.gitignore
similarity index 100%
rename from starter-for-react/.gitignore
rename to docs/examples/.gitignore
diff --git a/starter-for-react/LICENSE b/docs/examples/LICENSE
similarity index 100%
rename from starter-for-react/LICENSE
rename to docs/examples/LICENSE
diff --git a/starter-for-react/README.md b/docs/examples/README.md
similarity index 100%
rename from starter-for-react/README.md
rename to docs/examples/README.md
diff --git a/starter-for-react/eslint.config.js b/docs/examples/eslint.config.js
similarity index 100%
rename from starter-for-react/eslint.config.js
rename to docs/examples/eslint.config.js
diff --git a/starter-for-react/index.html b/docs/examples/index.html
similarity index 100%
rename from starter-for-react/index.html
rename to docs/examples/index.html
diff --git a/starter-for-react/package-lock.json b/docs/examples/package-lock.json
similarity index 100%
rename from starter-for-react/package-lock.json
rename to docs/examples/package-lock.json
diff --git a/starter-for-react/package.json b/docs/examples/package.json
similarity index 100%
rename from starter-for-react/package.json
rename to docs/examples/package.json
diff --git a/starter-for-react/public/appwrite.svg b/docs/examples/public/appwrite.svg
similarity index 100%
rename from starter-for-react/public/appwrite.svg
rename to docs/examples/public/appwrite.svg
diff --git a/starter-for-react/public/react.svg b/docs/examples/public/react.svg
similarity index 100%
rename from starter-for-react/public/react.svg
rename to docs/examples/public/react.svg
diff --git a/starter-for-react/src/App.css b/docs/examples/src/App.css
similarity index 100%
rename from starter-for-react/src/App.css
rename to docs/examples/src/App.css
diff --git a/starter-for-react/src/App.jsx b/docs/examples/src/App.jsx
similarity index 100%
rename from starter-for-react/src/App.jsx
rename to docs/examples/src/App.jsx
diff --git a/starter-for-react/src/lib/appwrite.js b/docs/examples/src/lib/appwrite.js
similarity index 100%
rename from starter-for-react/src/lib/appwrite.js
rename to docs/examples/src/lib/appwrite.js
diff --git a/starter-for-react/src/main.jsx b/docs/examples/src/main.jsx
similarity index 100%
rename from starter-for-react/src/main.jsx
rename to docs/examples/src/main.jsx
diff --git a/starter-for-react/vite.config.js b/docs/examples/vite.config.js
similarity index 100%
rename from starter-for-react/vite.config.js
rename to docs/examples/vite.config.js
diff --git a/public/cancel.html b/docs/legacy/cancel.html
similarity index 100%
rename from public/cancel.html
rename to docs/legacy/cancel.html
diff --git a/public/index.html b/docs/legacy/index.html
similarity index 100%
rename from public/index.html
rename to docs/legacy/index.html
diff --git a/public/success.html b/docs/legacy/success.html
similarity index 100%
rename from public/success.html
rename to docs/legacy/success.html
diff --git a/server/CORRECTNESS_VALIDATION.md b/docs/server/CORRECTNESS_VALIDATION.md
similarity index 100%
rename from server/CORRECTNESS_VALIDATION.md
rename to docs/server/CORRECTNESS_VALIDATION.md
diff --git a/server/E2E_TEST_GUIDE.md b/docs/server/E2E_TEST_GUIDE.md
similarity index 100%
rename from server/E2E_TEST_GUIDE.md
rename to docs/server/E2E_TEST_GUIDE.md
diff --git a/server/ENDPOINT_VERIFICATION.md b/docs/server/ENDPOINT_VERIFICATION.md
similarity index 100%
rename from server/ENDPOINT_VERIFICATION.md
rename to docs/server/ENDPOINT_VERIFICATION.md
diff --git a/server/FRONTEND_VERIFICATION.md b/docs/server/FRONTEND_VERIFICATION.md
similarity index 100%
rename from server/FRONTEND_VERIFICATION.md
rename to docs/server/FRONTEND_VERIFICATION.md
diff --git a/server/MANUAL_TEST_CHECKLIST.md b/docs/server/MANUAL_TEST_CHECKLIST.md
similarity index 100%
rename from server/MANUAL_TEST_CHECKLIST.md
rename to docs/server/MANUAL_TEST_CHECKLIST.md
diff --git a/server/TASK_4_COMPLETION_SUMMARY.md b/docs/server/TASK_4_COMPLETION_SUMMARY.md
similarity index 100%
rename from server/TASK_4_COMPLETION_SUMMARY.md
rename to docs/server/TASK_4_COMPLETION_SUMMARY.md
diff --git a/APPWRITE_CORS_SETUP.md b/docs/setup/APPWRITE_CORS_SETUP.md
similarity index 100%
rename from APPWRITE_CORS_SETUP.md
rename to docs/setup/APPWRITE_CORS_SETUP.md
diff --git a/APPWRITE_SETUP.md b/docs/setup/APPWRITE_SETUP.md
similarity index 100%
rename from APPWRITE_SETUP.md
rename to docs/setup/APPWRITE_SETUP.md
diff --git a/client/FAVICON_SETUP.md b/docs/setup/FAVICON_SETUP.md
similarity index 100%
rename from client/FAVICON_SETUP.md
rename to docs/setup/FAVICON_SETUP.md
diff --git a/GOOGLE_OAUTH_SETUP.md b/docs/setup/GOOGLE_OAUTH_SETUP.md
similarity index 100%
rename from GOOGLE_OAUTH_SETUP.md
rename to docs/setup/GOOGLE_OAUTH_SETUP.md
diff --git a/SETUP_GUIDE.md b/docs/setup/SETUP_GUIDE.md
similarity index 100%
rename from SETUP_GUIDE.md
rename to docs/setup/SETUP_GUIDE.md
diff --git a/COMMIT_COMMANDS.txt b/scripts/COMMIT_COMMANDS.txt
similarity index 100%
rename from COMMIT_COMMANDS.txt
rename to scripts/COMMIT_COMMANDS.txt
diff --git a/COMMIT_MESSAGE.md b/scripts/COMMIT_MESSAGE.md
similarity index 100%
rename from COMMIT_MESSAGE.md
rename to scripts/COMMIT_MESSAGE.md
diff --git a/FINAL_COMMIT.bat b/scripts/FINAL_COMMIT.bat
similarity index 100%
rename from FINAL_COMMIT.bat
rename to scripts/FINAL_COMMIT.bat
diff --git a/scripts/README.md b/scripts/README.md
new file mode 100644
index 0000000..397470c
--- /dev/null
+++ b/scripts/README.md
@@ -0,0 +1,52 @@
+# Scripts
+
+Dieser Ordner enthält alle Hilfs-Scripts für das Projekt.
+
+## 🚀 Aktive Scripts
+
+### Deployment
+
+- **deploy-build.js** - Node.js Script für Build-Deployment (veraltet, wird durch Webhook ersetzt)
+- **deploy-to-server.mjs** - Automatisches Deployment-Skript (wird vom Webhook aufgerufen)
+
+### Setup
+
+- **setup-appwrite.ps1** - Appwrite Setup-Script
+- **setup-production.ps1** - Production Setup-Script
+
+## 📦 Veraltete Scripts (können entfernt werden)
+
+Die folgenden Scripts sind veraltet und werden nicht mehr benötigt:
+
+- `git-commit.bat` - Git-Commits sollten direkt über Git gemacht werden
+- `git-commit.sh` - Git-Commits sollten direkt über Git gemacht werden
+- `git-commit-fix.bat` - Git-Commits sollten direkt über Git gemacht werden
+- `FINAL_COMMIT.bat` - Git-Commits sollten direkt über Git gemacht werden
+- `run-git-commit.ps1` - Git-Commits sollten direkt über Git gemacht werden
+- `COMMIT_COMMANDS.txt` - Temporäre Datei
+- `COMMIT_MESSAGE.md` - Temporäre Datei
+
+**Empfehlung:** Diese Dateien können gelöscht werden, da Git-Commits direkt über `git commit` gemacht werden sollten.
+
+## 📝 Verwendung
+
+### Deployment-Script (automatisch)
+
+Das Deployment-Script wird automatisch vom Webhook-Handler aufgerufen. Siehe `docs/deployment/GITEA_WEBHOOK_SETUP.md` für Details.
+
+### Setup-Scripts
+
+```powershell
+# Appwrite Setup
+.\setup-appwrite.ps1
+
+# Production Setup
+.\setup-production.ps1
+```
+
+## 🔧 Neue Scripts hinzufügen
+
+Wenn du neue Scripts hinzufügst:
+1. Dokumentiere sie in dieser README
+2. Füge sie zu `.gitignore` hinzu, falls sie sensible Daten enthalten
+3. Stelle sicher, dass sie plattformübergreifend funktionieren (oder dokumentiere Plattform-Anforderungen)
diff --git a/deploy-build.js b/scripts/deploy-build.js
similarity index 100%
rename from deploy-build.js
rename to scripts/deploy-build.js
diff --git a/git-commit-fix.bat b/scripts/git-commit-fix.bat
similarity index 100%
rename from git-commit-fix.bat
rename to scripts/git-commit-fix.bat
diff --git a/git-commit.bat b/scripts/git-commit.bat
similarity index 100%
rename from git-commit.bat
rename to scripts/git-commit.bat
diff --git a/git-commit.sh b/scripts/git-commit.sh
similarity index 100%
rename from git-commit.sh
rename to scripts/git-commit.sh
diff --git a/run-git-commit.ps1 b/scripts/run-git-commit.ps1
similarity index 87%
rename from run-git-commit.ps1
rename to scripts/run-git-commit.ps1
index 2a8e06d..f595816 100644
--- a/run-git-commit.ps1
+++ b/scripts/run-git-commit.ps1
@@ -37,7 +37,7 @@ if (-not $gitExe) {
Write-Host "Alternativ führe diese Befehle manuell in Git Bash aus:" -ForegroundColor Yellow
Write-Host "cd c:\Users\User\Documents\GitHub\ANDJJJJJJ" -ForegroundColor Cyan
Write-Host "git add ." -ForegroundColor Cyan
- Write-Host "git commit -m `"feat: Control Panel Redesign v2.0 - Card-basiertes Layout, Side Panels, Dark Mode Fixes, Volle Breite Layout`"" -ForegroundColor Cyan
+ Write-Host "git commit -m `"feat: Control Panel v2.0 - Cards, Side Panels, Dark Mode, volle Breite`"" -ForegroundColor Cyan
Write-Host "git push" -ForegroundColor Cyan
exit 1
}
@@ -58,7 +58,7 @@ if ($LASTEXITCODE -ne 0) {
}
Write-Host "Erstelle Commit..." -ForegroundColor Yellow
-& $gitExe commit -m "feat: Control Panel Redesign v2.0 - Card-basiertes Layout, Side Panels, Dark Mode Fixes, Volle Breite Layout"
+& $gitExe commit -m "feat: Control Panel v2.0 - Cards, Side Panels, Dark Mode, volle Breite"
if ($LASTEXITCODE -ne 0) {
Write-Host "❌ Fehler beim Commit" -ForegroundColor Red
diff --git a/setup-appwrite.ps1 b/scripts/setup-appwrite.ps1
similarity index 100%
rename from setup-appwrite.ps1
rename to scripts/setup-appwrite.ps1
diff --git a/setup-production.ps1 b/scripts/setup-production.ps1
similarity index 100%
rename from setup-production.ps1
rename to scripts/setup-production.ps1