mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:21:09 +02:00
- Restructure chat as apps/mobile, apps/web, apps/landing, backend - Add NestJS backend for secure Azure OpenAI API calls - Remove exposed API key from mobile app (security fix) - Add shared chat-types package - Create SvelteKit web app scaffold - Create Astro landing page scaffold - Update pnpm workspace configuration - Add project-level CLAUDE.md documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Chat Application
Eine moderne Chat-Anwendung mit LLM-Integration, entwickelt mit Expo React Native und Supabase.
Projektübersicht
Diese Anwendung ermöglicht Benutzern, mit verschiedenen LLM-Modellen zu interagieren. Sie unterstützt verschiedene Konversationsmodi:
- Freier Modus: Offene Gespräche mit dem KI-Modell
- Geführter Modus: Strukturierte Konversationen mit vordefinierten Schritten
- Vorlagen-Modus: Vordefinierte Gesprächsabläufe für spezifische Anwendungsfälle
Datenbankstruktur
Die Anwendung verwendet Supabase mit folgender Datenbankstruktur:
Users
| Feld | Typ | Beschreibung |
|---|---|---|
| id | UUID (PK) | Eindeutige Benutzer-ID |
| String | E-Mail-Adresse des Benutzers | |
| name | String | Name des Benutzers |
| created_at | Timestamp | Erstellungszeitpunkt |
| updated_at | Timestamp | Letzter Aktualisierungszeitpunkt |
Conversations
| Feld | Typ | Beschreibung |
|---|---|---|
| id | UUID (PK) | Eindeutige Konversations-ID |
| user_id | UUID (FK) | Referenz zum Benutzer |
| model_id | UUID (FK) | Referenz zum verwendeten LLM-Modell |
| template_id | UUID (FK, Nullable) | Optionale Referenz zur verwendeten Vorlage |
| conversation_mode | String | Modus der Konversation (frei, geführt, vorlage) |
| created_at | Timestamp | Erstellungszeitpunkt |
| updated_at | Timestamp | Letzter Aktualisierungszeitpunkt |
Messages
| Feld | Typ | Beschreibung |
|---|---|---|
| id | UUID (PK) | Eindeutige Nachrichten-ID |
| conversation_id | UUID (FK) | Referenz zur Konversation |
| sender | Enum | Absender der Nachricht (user, ai) |
| message_text | Text | Inhalt der Nachricht |
| created_at | Timestamp | Erstellungszeitpunkt |
| updated_at | Timestamp | Letzter Aktualisierungszeitpunkt |
Models
| Feld | Typ | Beschreibung |
|---|---|---|
| id | UUID (PK) | Eindeutige Modell-ID |
| name | String | Name des Modells (z.B. GPT-4, GPT-3) |
| description | Text | Beschreibung des Modells |
| parameters | JSON | Optionale Einstellungen für das Modell |
Templates
| Feld | Typ | Beschreibung |
|---|---|---|
| id | UUID (PK) | Eindeutige Vorlagen-ID |
| name | String | Name der Vorlage (z.B. "Vertrag erstellen") |
| description | Text | Beschreibung der Vorlage |
| mode_type | Text | Detaillierte Beschreibung des Modus/Guided Flow |
| initial_questions | JSON/Text | Startfragen oder Anweisungen |
| created_at | Timestamp | Erstellungszeitpunkt |
| updated_at | Timestamp | Letzter Aktualisierungszeitpunkt |
Beziehungen
- Ein Benutzer kann mehrere Konversationen haben
- Eine Konversation gehört zu einem Benutzer und verwendet ein Modell
- Eine Konversation kann optional eine Vorlage verwenden
- Eine Konversation enthält mehrere Nachrichten
- Jede Nachricht gehört zu einer Konversation
Technologie-Stack
- Frontend: Expo React Native
- Backend/Datenbank: Supabase
- Authentifizierung: Supabase Auth
- LLM-Integration: Verschiedene KI-Modelle (GPT-4, GPT-3, etc.)
Funktionen
- Benutzerregistrierung und -anmeldung
- Erstellen und Verwalten von Konversationen
- Auswahl verschiedener KI-Modelle
- Unterstützung für verschiedene Konversationsmodi
- Vorlagensystem für spezifische Anwendungsfälle
- Nachrichtenverlauf und -speicherung
Installation und Einrichtung
- Repository klonen
- Abhängigkeiten installieren:
npm installoderyarn install - Supabase-Projekt einrichten und Verbindungsdaten konfigurieren
- Umgebungsvariablen in
.envkonfigurieren - Anwendung starten:
expo start
Entwicklungshinweise
- Supabase-Tabellen entsprechend der oben beschriebenen Struktur einrichten
- Sicherstellen, dass alle Fremdschlüsselbeziehungen korrekt konfiguriert sind
- API-Schlüssel für LLM-Modelle sicher verwalten