# 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.
# Beh-rden-Brief
