# 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..workers.dev`. ```bash # 5. Kurz testen curl https://dogfather-universe-postfach..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 `