generated from knso/webklar-preview-template
- 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>
79 lines
3.3 KiB
Markdown
79 lines
3.3 KiB
Markdown
# 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 · 🟡 7–21 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.
|