# 🚀 Namecheap Deployment-Anleitung für das Client-Preview-Portal

Dieses Projekt wurde vollständig vorbereitet, um auf **Namecheap Shared Hosting** (cPanel mit dem "Setup Node.js App"-Modul) gehostet zu werden. Durch die Aktivierung des `standalone`-Modus in Next.js und das Hinzufügen der intelligenten `server.js`-Startdatei läuft die Website dort extrem performant und zuverlässig.

---

## 📋 Voraussetzungen & Vorbereitung

Bevor du die Dateien hochlädst, solltest du das Projekt einmal lokal bauen, um sicherzustellen, dass alle Produktionsdateien generiert wurden:

1. **Lokal bauen:**
   Führe in deinem Terminal folgenden Befehl aus:
   ```bash
   npm run build
   ```
   *Dieser Befehl generiert den optimierten `.next/standalone`-Ordner sowie alle statischen Assets.*

---

## 📤 Schritt 1: Dateien vorbereiten & hochladen

Um den Upload so schnell wie möglich zu machen, erstelle eine ZIP-Datei des Projekts. 

⚠️ **WICHTIG:** Schließe folgende Ordner beim Packen aus (diese sind sehr groß und werden auf dem Server neu installiert oder sind überflüssig):
- `node_modules/` (Wird von Namecheap neu installiert)
- `.git/` (Falls vorhanden)

### Was MUSS in die ZIP-Datei?
- `.next/` (Besonders wichtig: der darin enthaltene `standalone`-Ordner!)
- `public/` (Deine statischen Assets wie Bilder)
- `src/` & `prisma/` (Für eventuelle DB-Updates)
- `package.json` & `package-lock.json`
- `server.js` (Deine neue cPanel-Startdatei)
- `next.config.ts` & `postcss.config.mjs` & `tsconfig.json` & `components.json`

### Hochladen:
1. Logge dich in dein **Namecheap cPanel** ein.
2. Öffne den **File Manager (Dateimanager)**.
3. Erstelle ein neues Verzeichnis außerhalb von `public_html` (z.B. `/home/username/client-portal`).
4. Lade deine ZIP-Datei dort hoch und entpacke sie.

---

## 🛠️ Schritt 2: Node.js-App in cPanel einrichten

1. Gehe im cPanel zu **Setup Node.js App** (unter der Kategorie *Software*).
2. Klicke auf **Create Application**.
3. Fülle das Formular wie folgt aus:
   - **Node.js version:** Wähle die neueste verfügbare Version (empfohlen: `18.x` oder `20.x`).
   - **Application mode:** `Production`
   - **Application root:** Der Pfad, in den du die ZIP entpackt hast (z.B. `client-portal`).
   - **Application URL:** Die Domain oder Subdomain, unter der das Portal erreichbar sein soll (z.B. `portal.deine-domain.de`).
   - **Application startup file:** `server.js` (Das ist die von uns erstellte Datei!).
4. Klicke oben rechts auf **Create**.

---

## 🔑 Schritt 3: Umgebungsvariablen (Environment Variables) einrichten

Deine Anwendung benötigt wichtige Konfigurationen, um sich mit der PostgreSQL-Datenbank zu verbinden und Sitzungen abzusichern.

Füge unten auf der Node.js-Konfigurationsseite in cPanel folgende **Environment Variables** hinzu (klicke jeweils auf *Add Variable*):

| Variable | Wert / Erklärung |
| :--- | :--- |
| `DATABASE_URL` | Deine PostgreSQL-Verbindungs-URL (z.B. von Supabase oder Namecheap PostgreSQL) |
| `AUTH_SECRET` | Ein sicherer Zufallsschlüssel (z.B. `node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"` im Terminal ausführen, um einen zu generieren) |
| `NEXTAUTH_URL` | Die genaue URL deiner App ohne Slash am Ende (z.B. `https://portal.deine-domain.de`) |
| `AUTH_URL` | Identisch mit `NEXTAUTH_URL` |
| `UPLOAD_DIR` | `./uploads` (oder ein absoluter Pfad auf deinem Server) |
| `NODE_ENV` | `production` |

*Klicke nach dem Hinzufügen aller Variablen oben auf **Save**.*

---

## 📦 Schritt 4: Abhängigkeiten installieren & App starten

1. Scrolle auf der Node.js-App-Konfigurationsseite nach unten zu **Npm Package Installer**.
2. Klicke auf den Button **Run JS Build** (falls vorhanden) oder klicke einfach auf **Run npm install**, um alle benötigten Abhängigkeiten direkt auf dem Namecheap-Server zu installieren.
3. Sobald die Installation abgeschlossen ist, klicke ganz oben auf **Restart**, um die Anwendung neu zu starten.

🎉 **Fertig!** Deine App ist nun unter der ausgewählten URL erreichbar.

---

### 💡 Tipps & Fehlerbehebung (Troubleshooting)

* **CSS/Bilder laden nicht:** Unsere intelligente `server.js` kopiert automatisch beim ersten Start die Ordner `public/` und `.next/static/` in das Standalone-Verzeichnis. Sollte ein Asset fehlen, klicke in cPanel einmal auf **Restart**, um den Kopiervorgang erneut anzustoßen.
* **Datenbank-Migrationen:** Falls du deine Datenbank-Tabellen auf der neuen PostgreSQL-Datenbank einrichten musst, kopiere ganz oben auf der Node.js-Konfigurationsseite den Befehl zum Betreten des Virtual Environments (z.B. `source /home/username/nodevenv/client-portal/...`) und führe ihn im cPanel-Terminal/SSH aus. Führe danach dort `npx prisma db push` aus.
