generated from knso/webklar-preview-template
Release-Vorbereitung: Proxy, Kostenoptimierung, Freemium, Store-Assets
- Backend-Proxy (Cloudflare Worker in proxy/): API-Key serverseitig, Modell-Whitelist, max_tokens-Deckel, Tageslimits pro Gerät und IP - Modell-Split: Analyse auf Sonnet 5, Übersetzung/Antwort auf Haiku 4.5 - Bild-Downscaling auf 2000px vor dem Upload (ScanScreen) - Expo SDK 56 -> 57 Upgrade - Freemium: 3 Gratis-Analysen mit lokalem Zähler und Paywall-Hinweis - Einstellungen: API-Key-Feld nur noch im Dev-Modus (NUTZT_PROXY) - Build-Setup: Bundle-IDs, eas.json, Splash-Screen-Plugin - Tests: jest-expo + 17 Tests für die Ampel-/Fristlogik - Rechtliches: Datenschutzerklärung (Entwurf), Webseite (webseite/, live auf behoerdenklar.pages.dev), Store-Texte (store/) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
61
proxy/README.md
Normal file
61
proxy/README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# BehördenKlar Backend-Proxy
|
||||
|
||||
Cloudflare Worker, der den Anthropic-API-Key serverseitig hält. Die App schickt
|
||||
ihre Claude-Anfragen an diesen Worker statt direkt an Anthropic — kein API-Key
|
||||
in der App, Missbrauchsschutz inklusive.
|
||||
|
||||
## Was der Worker macht
|
||||
|
||||
1. Prüft die anonyme Geräte-ID (`x-geraete-id`-Header) und setzt ein
|
||||
**Tageslimit pro Gerät** durch (Standard: 20 Anfragen, siehe `wrangler.toml`)
|
||||
2. Erlaubt nur die **Modelle, die die App nutzt**, und deckelt `max_tokens`
|
||||
3. Leitet den Request-Body unverändert an `api.anthropic.com/v1/messages`
|
||||
weiter und setzt dabei serverseitig `x-api-key` + `anthropic-version`
|
||||
4. Gibt die Anthropic-Antwort unverändert zurück
|
||||
|
||||
## Deployment (einmalig)
|
||||
|
||||
```bash
|
||||
cd proxy
|
||||
npm install
|
||||
|
||||
# Bei Cloudflare anmelden (kostenloser Account reicht für den Start)
|
||||
npx wrangler login
|
||||
|
||||
# KV-Namespace für das Rate-Limit anlegen …
|
||||
npx wrangler kv namespace create RATE_LIMIT
|
||||
# … und die ausgegebene ID in wrangler.toml bei [[kv_namespaces]] eintragen
|
||||
|
||||
# Anthropic-API-Key als Secret hinterlegen (von console.anthropic.com)
|
||||
npx wrangler secret put ANTHROPIC_API_KEY
|
||||
|
||||
# Deployen
|
||||
npm run deploy
|
||||
```
|
||||
|
||||
Der Deploy gibt eine URL aus, z. B. `https://behoerdenklar-proxy.<account>.workers.dev`.
|
||||
|
||||
## App umstellen
|
||||
|
||||
In [`src/services/claudeClient.ts`](../src/services/claudeClient.ts) die URL eintragen:
|
||||
|
||||
```ts
|
||||
const PROXY_URL: string | null = 'https://behoerdenklar-proxy.<account>.workers.dev';
|
||||
```
|
||||
|
||||
Fertig — die App braucht dann keinen API-Key mehr in den Einstellungen.
|
||||
|
||||
## Lokal testen
|
||||
|
||||
```bash
|
||||
npm run dev # startet den Worker auf http://localhost:8787
|
||||
```
|
||||
|
||||
Dann in `claudeClient.ts` vorübergehend `PROXY_URL = 'http://localhost:8787'`
|
||||
setzen (im Simulator; auf echtem Gerät die LAN-IP des Rechners verwenden).
|
||||
|
||||
## Später ergänzen (wenn Abo/IAP kommt)
|
||||
|
||||
- Abo-Prüfung: RevenueCat-Webhook oder Receipt-Validierung vor dem Weiterleiten
|
||||
- Tageslimit je nach Abo-Stufe (Free: 3, Abo: 20+)
|
||||
- Die Geräte-ID durch eine echte Nutzer-ID ersetzen
|
||||
Reference in New Issue
Block a user