# Vereinfachungsplan für Chat App

Basierend auf der Codeanalyse schlage ich folgende Maßnahmen zur Vereinfachung des Projekts vor:

## 1. Komponenten-Konsolidierung

- **Chat-Eingabefelder**: `MessageInput.tsx` und `ChatPromptInput.tsx` zu einer Komponente zusammenführen
- **Modell-Auswahl**: Die Logik aus `ModelDropdown.tsx` und `model-selection.tsx` in einen gemeinsamen Service extrahieren
- **Nachrichten-Darstellung**: Eine wiederverwendbare `MessageRenderer`-Komponente für alle Nachrichten-Displaytypen erstellen

## 2. Code-Reduktion

- **Redundante Modell-Definitionen**: Gemeinsame Typendefinitionen in `types/index.ts` zentralisieren
- **API-Wrapper**: XHR durch einfachen Fetch-API-Wrapper in `utils/api.ts` ersetzen
- **Error Handling**: Zentrales Fehlerbehandlungssystem statt wiederholter try/catch-Blöcke
- **Styling**: Vollständig auf NativeWind umstellen und StyleSheet.create entfernen

## 3. Architektur-Optimierung

- **State Management**:
  - Auth-Zustand über einen zentralen Store verwalten
  - Modell- und Konversationszustand aus UI-Komponenten in Services verlagern

- **Typ-System**:
  - Gemeinsame Schnittstellen für Modelle, Nachrichten und Konversationen
  - Striktere Typprüfung für alle API-Antworten

- **Service-Layer**:
  - Klare Trennung zwischen UI, Datenmodell und API-Logik
  - Einheitliche Fehlerrückgabe mit Typisierung

## 4. Dateistruktur

```
/app             - Screens & Routing
/components      - UI-Komponenten
/hooks           - Gemeinsame React Hooks
/services        - Business-Logik
/types           - Typendefinitionen
/utils           - Hilfsfunktionen
```

## 5. Performance-Optimierungen

- Virtualisierte Listen für große Nachrichtenthreads
- Optimistische UI-Updates für bessere UX
- Caching von Modellantworten zur Reduzierung von API-Aufrufen

## Implementierungsreihenfolge

1. Typensystem konsolidieren
2. API-Wrapper erstellen
3. State Management umstellen
4. UI-Komponenten vereinheitlichen
5. Styling standardisieren
