Files
beh-rde-brief/README.md
JUSN 9dc1d8d87b 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>
2026-07-14 14:14:00 +02:00

79 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BehördenKlar
Behördenbriefe scannen, in einfacher Sprache verstehen, übersetzen und direkt beantworten.
## Funktionen
- 📷 **Brief scannen** — Foto, Galerie-Bild oder PDF
- 🧠 **KI-Analyse** (Claude Vision) — ein Aufruf liefert strukturiert:
- „Was will das Amt von mir?" in 2-3 Sätzen (A2-Niveau)
- Ausführliche Erklärung in einfacher Sprache
- Fachbegriffe mit Erklärung
- Fristen & Termine (exakte Daten)
- Checkliste („Diese Unterlagen mitbringen…")
- 🚦 **Dringlichkeits-Ampel** — lokal berechnet: 🔴 < 7 Tage · 🟡 721 Tage · 🟢 keine Frist
- 🌐 **Übersetzung** in 9 Sprachen (Türkisch, Arabisch, Englisch, Russisch, Ukrainisch, Französisch, Farsi, Rumänisch, Polnisch) — on demand, gecacht
- ✍️ **Antwort-Generator** — Vorlagen (Terminbestätigung, Verschiebung, Widerspruch, Unterlagen nachreichen, Rückfrage), frei editierbar, PDF-Export
- 🗓️ **Kalender-Export** für Termine, ⏰ **lokale Erinnerungen** 3 + 1 Tage vor Fristen
- 📖 **Behörden-Glossar** (offline), 🔊 **Vorlese-Funktion**, 📡 **Offline-Hinweis**
- 🔒 **Datenschutz**: Einwilligung vor erstem Scan, alle Daten nur lokal, „Alles löschen"-Funktion
## Starten (Entwicklung)
```bash
npm install
npx expo start
```
App in Expo Go (oder Development Build) öffnen, dann:
1. **Einstellungen** → Anthropic-API-Schlüssel eintragen (von console.anthropic.com).
Der Schlüssel landet verschlüsselt im Secure Store des Geräts.
2. **Brief scannen** → Einwilligung bestätigen → Foto machen.
> Hinweis: Erinnerungen (Benachrichtigungen) sind in Expo Go auf Android
> eingeschränkt — im Development Build (`npx expo run:android`) voll verfügbar.
## Produktion: Backend-Proxy statt API-Key in der App
Für Endkunden darf kein API-Key in der App stecken. Der fertige Proxy
(Cloudflare Worker) liegt in [`proxy/`](proxy/README.md) — er hält den Key
serverseitig, erlaubt nur die App-Modelle, deckelt `max_tokens` und setzt ein
Tageslimit pro Gerät durch.
Nach dem Deployment (Anleitung: `proxy/README.md`) in
`src/services/claudeClient.ts` die Worker-URL eintragen:
```ts
const PROXY_URL: string | null = 'https://behoerdenklar-proxy.<account>.workers.dev';
```
Abrechnung der Endkunden dann per Abo/In-App-Kauf (Abo-Prüfung im Proxy ergänzen).
## Architektur
```
src/
services/
claudeClient.ts Low-Level Claude-API-Client (Dev-Direkt / Prod-Proxy)
analyse.ts Vision-Aufruf + JSON-Schema (Structured Output)
uebersetzung.ts Übersetzung pro Sprache, gecacht
antwort.ts Antwort-Entwurf-Generator
storage.ts SecureStore (Key) + AsyncStorage (Archiv, Consent)
erinnerungen.ts lokale Benachrichtigungen vor Fristen
kalender.ts Termin-Export
utils/ampel.ts Dringlichkeits-Ampel (deterministisch, lokal)
store/useAppStore.ts Zustand-Store, synchron zu AsyncStorage
screens/ Home, Consent, Scan, Analyse, Antwort, Glossar, Einstellungen
components/ GrossButton, Ampel (barrierefrei: 56px-Targets, große Schrift)
data/glossar.ts Offline-Glossar
```
Die KI-Antworten sind über **Structured Output** (JSON-Schema) garantiert
valide — kein fragiles Text-Parsing.
## Wichtig
Diese App ersetzt keine Rechtsberatung. Bei rechtlich relevanten Antworten
(z. B. Widerspruch) Beratungsstelle oder Anwalt hinzuziehen.