# DOGFATHER UNIVERSE — Bewerbungs-Postfach (Cloudflare Worker)

Dieser Worker nimmt Bewerbungen von `bewerben.html` entgegen und speichert sie in Cloudflare KV.
Nur wer den richtigen Code kennt, kann sie über `postfach.html` einsehen — der Code wird
**serverseitig** geprüft (nicht im Browser-Code sichtbar), das ist der eigentliche Schutz.

Kosten: läuft im kostenlosen Cloudflare-Tier (Workers Free + KV Free reichen für dieses Volumen locker).

## ✅ Bereits deployed

Läuft schon unter: https://dogfather-universe-postfach.dogfather1608.workers.dev
(Health-Check: `/health`). Die Website (`assets/js/forms.js`, `index.html`, `postfach.html`) zeigt
bereits auf diese URL — die Schritte unten sind nur nötig, falls der Worker mal neu aufgesetzt
werden muss (z.B. anderer Account, Code vergessen und Secret-Reset gewünscht).

## Voraussetzungen

- Ein (kostenloser) Cloudflare-Account
- Node.js installiert (für `npx wrangler`)

## Deploy in 5 Schritten

Alles im Ordner `cloudflare-worker/` ausführen:

```bash
cd cloudflare-worker

# 1. Bei Cloudflare einloggen (öffnet Browser zur Anmeldung)
npx wrangler login

# 2. KV-Namespace anlegen (Speicher für die Bewerbungen)
npx wrangler kv namespace create BEWERBUNGEN
```

Die Ausgabe von Schritt 2 enthält eine `id = "..."`. Diese `id` in `wrangler.toml` bei
`REPLACE_ME` eintragen.

```bash
# 3. Geheimen Zugangscode für das Postfach festlegen
#    (wird abgefragt, nirgends im Code sichtbar — frei wählbar, z.B. ein langes Passwort)
npx wrangler secret put POSTFACH_CODE

# 4. Worker deployen
npx wrangler deploy
```

Schritt 4 gibt eine URL aus, z.B. `https://dogfather-universe-postfach.<dein-account>.workers.dev`.

```bash
# 5. Kurz testen
curl https://dogfather-universe-postfach.<dein-account>.workers.dev/health
# sollte {"ok":true,"service":"dogfather-universe-postfach"} zurückgeben
```

## Website mit dem Worker verbinden

Nach dem Deploy die Worker-URL an zwei Stellen eintragen:

1. `assets/js/forms.js` → Konstante `API_BASE_URL` ganz oben auf die Worker-URL setzen
   (ohne abschließenden Slash).
2. `postfach.html` → Konstante `API_BASE_URL` im `<script>`-Block genauso setzen.

Danach gehen neue Bewerbungen automatisch an den Worker statt (nur) an den `mailto:`-Fallback,
und `postfach.html` kann sie mit dem in Schritt 3 gesetzten Code anzeigen.

## Wer den Code kennen darf

Der Code aus Schritt 3 ist dein **Owner-Code** — nur du (Dogi) solltest ihn kennen. Damit kannst
du nicht nur Bewerbungen sehen, sondern auch Helfer-Codes für andere Personen vergeben (siehe
unten). Code ändern: einfach `wrangler secret put POSTFACH_CODE` erneut ausführen und neuen Wert
eingeben — alte Bewerbungen bleiben erhalten, nur der Zugangscode ändert sich.

## Rollen für Rechte Hand, Linke Hand & Co.

Auf `postfach.html` gibt es — nur sichtbar, wenn du dich mit deinem Owner-Code einloggst — einen
Bereich „Rollen verwalten". Dort kannst du:

- **Neue Codes erzeugen**, mit Rolle (Rechte Hand / Linke Hand / frei) + Name (z.B. "VanVan").
  Der neue Code wird **einmalig** angezeigt — sofort weitergeben/notieren, danach ist er nicht
  mehr abrufbar (nur als Hash gespeichert, aus Sicherheitsgründen).
- **Codes entziehen**, falls sich jemandes Rolle ändert oder der Zugang nicht mehr gebraucht wird.

**Was Helfer-Codes können:** ausschließlich die eingegangenen Bewerbungen ansehen — dieselbe
Ansicht wie du. **Was sie NICHT können:** neue Codes erzeugen, andere Codes entziehen, oder
irgendetwas an der Website selbst verändern/löschen. Für Website-Änderungen gibt es in diesem
Worker schlicht keine einzige Funktion — das ist technisch gar nicht möglich, egal welchen Code
jemand hat.

## Wartung

- Bewerbungen ansehen: über `postfach.html` mit Code (empfohlen), oder direkt im Cloudflare
  Dashboard unter Workers & Pages → KV → `BEWERBUNGEN`.
- Bewerbungen löschen: im Cloudflare Dashboard unter KV die einzelnen `sub:...`-Einträge entfernen.
- CORS ist aktuell offen (`*`) — sobald die finale Domain feststeht, in `src/worker.js` →
  `corsHeaders()` auf die echte Domain einschränken (siehe TODO-Kommentar dort).
