mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-18 13:09:40 +02:00
Restructure the context app (formerly basetext) to follow the monorepo pattern with proper workspace configuration. Changes: - Move app files to apps/context/apps/mobile/ - Rename package to @context/mobile - Update bundle ID to com.manacore.context - Create pnpm-workspace.yaml for project workspace - Add dev scripts to root package.json - Update CLAUDE.md with project documentation The app structure is prepared for future web/backend additions. Note: Existing TypeScript errors in the original codebase are preserved. These should be fixed in a follow-up PR. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
648 lines
19 KiB
Markdown
648 lines
19 KiB
Markdown
# BaseText - Dokumentation
|
|
|
|
## Übersicht
|
|
|
|
BaseText ist eine React Native App zur Speicherung, Organisation, Analyse und KI-gestützten Verarbeitung von Textdokumenten. Die Plattform ermöglicht es Benutzern, Texte in "Spaces" zu organisieren, Beziehungen zwischen Dokumenten herzustellen und mithilfe von KI-Modellen Analysen und neue Texte zu generieren.
|
|
|
|
## Technologie-Stack
|
|
|
|
- **Frontend**: React Native mit Expo Router
|
|
- **Styling**: NativeWind (TailwindCSS für React Native)
|
|
- **Backend**: Supabase mit PostgreSQL
|
|
- **Authentifizierung**: Supabase Auth
|
|
- **KI-Integration**: Offen für verschiedene KI-Modelle
|
|
|
|
## Projektstruktur
|
|
|
|
Die App ist in folgende Hauptverzeichnisse strukturiert:
|
|
|
|
- `/app`: Enthält die Hauptseiten der Anwendung (Expo Router)
|
|
- `/components`: Wiederverwendbare UI-Komponenten
|
|
- `/assets`: Bilder und andere statische Ressourcen
|
|
- `/utils`: Hilfsfunktionen und Dienstprogramme
|
|
|
|
### Komponenten-Kategorien
|
|
|
|
Die Komponenten sind in verschiedene Kategorien eingeteilt:
|
|
|
|
1. **UI-Basiskomponenten** (`/components/ui/`)
|
|
- Text, Input, Card, Badge, Avatar, etc.
|
|
- Grundlegende Bausteine für die Benutzeroberfläche
|
|
|
|
2. **Layout-Komponenten** (`/components/layout/`)
|
|
- Screen, EmptyState
|
|
- Strukturieren den Aufbau der Seiten
|
|
|
|
3. **Funktionale Komponenten** (`/components/functional/`)
|
|
- SearchBar
|
|
- Bieten spezifische Funktionalitäten
|
|
|
|
4. **Auth-Komponenten** (`/components/auth/`)
|
|
- LoginForm
|
|
- Zuständig für Authentifizierungsprozesse
|
|
|
|
5. **Space-Komponenten** (`/components/spaces/`)
|
|
- SpaceCard
|
|
- Darstellung und Verwaltung von Spaces
|
|
|
|
6. **Document-Komponenten** (`/components/documents/`)
|
|
- DocumentCard
|
|
- Darstellung und Verwaltung von Dokumenten
|
|
|
|
## Hauptkomponenten
|
|
|
|
### SpaceCard
|
|
|
|
Die `SpaceCard`-Komponente zeigt einen Space mit seinen wichtigsten Informationen an:
|
|
|
|
```tsx
|
|
type SpaceCardProps = {
|
|
id: string;
|
|
name: string;
|
|
description?: string;
|
|
documentCount?: number;
|
|
tags?: string[];
|
|
onPress?: () => void;
|
|
};
|
|
```
|
|
|
|
- Zeigt den Namen und die Beschreibung des Space an
|
|
- Zeigt die Anzahl der enthaltenen Dokumente an
|
|
- Zeigt bis zu 3 Tags an, mit einem "+X" Badge für weitere Tags
|
|
- Navigiert beim Klick zur detaillierten Space-Ansicht
|
|
|
|
### DocumentCard
|
|
|
|
Die `DocumentCard`-Komponente zeigt ein Dokument mit seinen wichtigsten Informationen an:
|
|
|
|
```tsx
|
|
type DocumentCardProps = {
|
|
id: string;
|
|
title: string;
|
|
content?: string;
|
|
type: 'text' | 'context' | 'prompt';
|
|
createdBy?: {
|
|
id: string;
|
|
name: string;
|
|
imageUrl?: string;
|
|
};
|
|
createdAt?: string;
|
|
tags?: string[];
|
|
onPress?: () => void;
|
|
};
|
|
```
|
|
|
|
- Zeigt den Titel und eine Vorschau des Inhalts an
|
|
- Kennzeichnet den Dokumenttyp (Text, Kontext, Prompt) mit einem Badge
|
|
- Zeigt Informationen zum Ersteller und Erstellungsdatum an
|
|
- Zeigt bis zu 2 Tags an, mit einem "+X" Badge für weitere Tags
|
|
- Navigiert beim Klick zur detaillierten Dokument-Ansicht
|
|
|
|
### UI-Komponenten
|
|
|
|
#### Text
|
|
|
|
Die `Text`-Komponente ist eine erweiterte Version der React Native Text-Komponente mit verschiedenen Varianten:
|
|
|
|
- `h1`, `h2`, `h3`: Überschriften
|
|
- `body`: Standardtext
|
|
- `caption`: Kleinerer Text für Beschriftungen
|
|
|
|
#### Card
|
|
|
|
Die `Card`-Komponente dient als Container für verschiedene Inhalte:
|
|
|
|
- Bietet ein einheitliches Erscheinungsbild für Inhaltsblöcke
|
|
- Unterstützt Touch-Interaktionen
|
|
|
|
#### Badge
|
|
|
|
Die `Badge`-Komponente zeigt Kennzeichnungen oder Tags an:
|
|
|
|
- Verschiedene Varianten: `default`, `primary`, `info`, etc.
|
|
- Kompakte Darstellung von Kategorien oder Status
|
|
|
|
## Navigation
|
|
|
|
Die App verwendet Expo Router für die Navigation:
|
|
|
|
- Tab-Navigation für die Hauptbereiche (Home, Spaces, Dokumente, Profil)
|
|
- Stack-Navigation für detaillierte Ansichten
|
|
|
|
## Datenmodell
|
|
|
|
Die App arbeitet mit folgenden Hauptentitäten:
|
|
|
|
### Benutzer
|
|
|
|
Benutzer der Anwendung:
|
|
|
|
- `id`: Eindeutige ID (referenziert auth.users.id)
|
|
- `email`: E-Mail-Adresse des Benutzers
|
|
- `name`: Name des Benutzers
|
|
- `created_at`: Erstellungszeitpunkt
|
|
|
|
### Spaces
|
|
|
|
Organisatorische Einheiten zur Gruppierung von Dokumenten:
|
|
|
|
- `id`: Eindeutige ID
|
|
- `name`: Name des Space
|
|
- `description`: Beschreibung
|
|
- `user_id`: Besitzer des Space
|
|
- `created_at`: Erstellungszeitpunkt
|
|
- `settings`: Konfigurationen (JSONB)
|
|
|
|
### Dokumente
|
|
|
|
Zentrale Entität für alle Arten von Textinhalten:
|
|
|
|
- `id`: Eindeutige ID
|
|
- `title`: Titel des Dokuments
|
|
- `content`: Textinhalt
|
|
- `type`: Dokumenttyp (original, analysis, generated)
|
|
- `space_id`: Space, zu dem das Dokument gehört
|
|
- `user_id`: Ersteller des Dokuments
|
|
- `created_at`: Erstellungszeitpunkt
|
|
- `updated_at`: Zeitpunkt der letzten Aktualisierung
|
|
- `metadata`: Flexible Metadaten (JSONB)
|
|
|
|
### Dokumenttypen
|
|
|
|
Die App unterscheidet zwischen verschiedenen Dokumenttypen:
|
|
|
|
1. **Text (`type = 'text'`)**: Importierte oder manuell erstellte Texte, die als Ausgangspunkt für KI-Generierungen dienen
|
|
2. **Kontext (`type = 'context'`)**: Textinhalte, die als Kontext für KI-Anfragen dienen und Referenzmaterial oder Hintergrundinformationen enthalten
|
|
3. **Prompt (`type = 'prompt'`)**: Spezielle Prompts für KI-Modelle, die als Vorlagen für wiederkehrende KI-Anfragen verwendet werden können
|
|
|
|
## Dokumentspeicherung
|
|
|
|
TextContext verwendet ein hybrides Speichersystem, das automatisches Speichern mit manuellen Speicheroptionen kombiniert:
|
|
|
|
### Automatisches Speichern
|
|
|
|
1. **Inaktivitäts-Speicherung**:
|
|
- Dokumente werden automatisch nach 3 Sekunden Inaktivität gespeichert
|
|
- Funktioniert sowohl für neue als auch für bestehende Dokumente
|
|
- Verhindert Datenverlust bei unerwarteten Unterbrechungen
|
|
|
|
2. **Periodisches Backup**:
|
|
- Lokale Backups werden alle 10 Sekunden erstellt
|
|
- Ermöglicht die Wiederherstellung bei Verbindungsproblemen
|
|
|
|
3. **Speichern beim Verlassen**:
|
|
- Dokumente werden automatisch gespeichert, wenn die Seite verlassen wird
|
|
- Ein Bestätigungsdialog warnt vor dem Verlassen bei ungespeicherten Änderungen
|
|
|
|
4. **Direktes Auto-Save für neue Dokumente**:
|
|
- Neue Dokumente werden nach 2 Sekunden Tippaktivität automatisch gespeichert
|
|
- Sorgt für besonders schnelle Sicherung neuer Inhalte
|
|
|
|
### Sichtbare Indikatoren
|
|
|
|
- **Ungespeichert-Status**: Ein "Ungespeichert"-Indikator wird angezeigt, wenn Änderungen noch nicht gespeichert wurden
|
|
- **Toolbar-Buttons**: Alle Bearbeitungsoptionen sind durchgängig sichtbar, auch bei neuen Dokumenten
|
|
- **Konsole-Logs**: Detaillierte Logs zur Nachverfolgung des Speicherprozesses (nur für Entwickler)
|
|
|
|
### Leere Dokumente
|
|
|
|
- Leere Dokumente werden nicht automatisch gespeichert
|
|
- Erst wenn Inhalt eingegeben wurde, wird die Auto-Save-Funktionalität aktiviert
|
|
|
|
## Typische Workflows
|
|
|
|
### 1. Spaces verwalten
|
|
|
|
- Spaces erstellen, bearbeiten und löschen
|
|
- Dokumente in Spaces organisieren
|
|
|
|
### 2. Dokumente verwalten
|
|
|
|
- Dokumente erstellen, importieren und organisieren
|
|
- Dokumente in Spaces organisieren
|
|
- Metadaten hinzufügen (Autor, Tags, etc.)
|
|
|
|
### 3. Textanalyse
|
|
|
|
- Dokumente zur Analyse auswählen
|
|
- Analyse konfigurieren und durchführen
|
|
- Analyseergebnisse als neue Dokumente speichern
|
|
|
|
### 4. Textgenerierung
|
|
|
|
- Dokumente als Kontext auswählen
|
|
- Prompt für die Textgenerierung eingeben
|
|
- Generierte Texte als neue Dokumente speichern
|
|
|
|
## Erweiterungsmöglichkeiten
|
|
|
|
1. **Verbesserte Textanalyse**:
|
|
- Integration weiterer KI-Modelle
|
|
- Spezifische Analyse-Templates
|
|
|
|
2. **Visualisierungen**:
|
|
- Beziehungen zwischen Dokumenten
|
|
- Analyseergebnisse
|
|
|
|
3. **Export/Import**:
|
|
- Verschiedene Formate
|
|
- Bulk-Import
|
|
|
|
## Supabase-Integration
|
|
|
|
Die App verwendet einen zentralen Supabase-Service (`services/supabaseService.ts`), der alle Interaktionen mit der Datenbank verwaltet:
|
|
|
|
```typescript
|
|
// Beispiel für die Verwendung des Supabase-Service
|
|
import { getSpaces, createSpace, getDocuments } from '~/services/supabaseService';
|
|
|
|
// Spaces abrufen
|
|
const spaces = await getSpaces();
|
|
|
|
// Neuen Space erstellen
|
|
const { data, error } = await createSpace('Mein Space', 'Beschreibung', { tags: ['Wichtig'] });
|
|
|
|
// Dokumente in einem Space abrufen
|
|
const documents = await getDocuments(spaceId);
|
|
```
|
|
|
|
Dieser Service bietet eine einfache und einheitliche Schnittstelle zur Datenbank und abstrahiert die Komplexität der Supabase-API. Alle CRUD-Operationen für Benutzer, Spaces und Dokumente sind in diesem Service implementiert.
|
|
|
|
## KI-Integration
|
|
|
|
TextContext bietet umfangreiche KI-Funktionen zur Textgenerierung und -verarbeitung. Die Integration erfolgt über den zentralen AI-Service (`services/aiService.ts`), der verschiedene KI-Modelle unterstützt.
|
|
|
|
### Unterstützte KI-Modelle
|
|
|
|
- **Azure OpenAI**: GPT-4.1 und andere OpenAI-Modelle über Azure
|
|
- **Google Gemini**: Gemini Pro und andere Google-Modelle
|
|
|
|
### KI-Komponenten
|
|
|
|
#### AIAssistant
|
|
|
|
Die `AIAssistant`-Komponente bietet eine benutzerfreundliche Oberfläche für die Interaktion mit KI-Modellen:
|
|
|
|
```tsx
|
|
<AIAssistant
|
|
visible={showAIAssistant}
|
|
onClose={() => setShowAIAssistant(false)}
|
|
onInsertText={handleInsertGeneratedText}
|
|
documentContent={content}
|
|
documentTitle={title}
|
|
documentId={documentId}
|
|
onVersionCreated={handleVersionCreated}
|
|
/>
|
|
```
|
|
|
|
- Vordefinierte Prompts für häufige Aufgaben (Fortsetzen, Zusammenfassen, Umformulieren, Ideen generieren)
|
|
- Anpassbare Prompts für spezifische Anforderungen
|
|
- Auswahl zwischen verschiedenen KI-Modellen
|
|
|
|
#### PromptEditor
|
|
|
|
Der `PromptEditor` ermöglicht die detaillierte Anpassung von Prompts und bietet verschiedene Optionen für die Verwendung des generierten Textes:
|
|
|
|
- **An Cursor einfügen**: Fügt den Text an der aktuellen Cursor-Position ein
|
|
- **Am Anfang einfügen**: Fügt den Text am Anfang des Dokuments ein
|
|
- **Am Ende einfügen**: Fügt den Text am Ende des Dokuments ein
|
|
- **Dokument ersetzen**: Ersetzt den gesamten Dokumentinhalt mit dem generierten Text
|
|
- **Neue Version erstellen**: Erstellt ein neues Dokument mit dem generierten Text
|
|
|
|
### Dokumentenversionierung
|
|
|
|
Eine zentrale Funktion der KI-Integration ist die Dokumentenversionierung. Wenn ein Benutzer die Option "Neue Version erstellen" wählt, wird ein neues Dokument erstellt, das den generierten Text enthält, während das Originaldokument unverändert bleibt.
|
|
|
|
## Deployment
|
|
|
|
### Web-Deployment mit Netlify
|
|
|
|
TextContext kann als Web-Anwendung über Netlify bereitgestellt werden. Hier ist der Prozess für ein erfolgreiches Deployment:
|
|
|
|
#### Voraussetzungen
|
|
|
|
- Netlify CLI installiert: `npm install -g netlify-cli`
|
|
- Bei Netlify angemeldet: `netlify login`
|
|
|
|
#### Konfiguration
|
|
|
|
Die Konfiguration erfolgt über die `netlify.toml`-Datei im Projektverzeichnis:
|
|
|
|
```toml
|
|
[build]
|
|
command = "npx expo export"
|
|
publish = "dist"
|
|
|
|
[build.environment]
|
|
NODE_VERSION = "18"
|
|
|
|
[[redirects]]
|
|
from = "/*"
|
|
to = "/index.html"
|
|
status = 200
|
|
```
|
|
|
|
Diese Konfiguration:
|
|
- Verwendet den Befehl `npx expo export` zum Erstellen der Web-Version
|
|
- Veröffentlicht das `dist`-Verzeichnis
|
|
- Stellt sicher, dass Node.js 18 für den Build verwendet wird
|
|
- Konfiguriert Redirects für Client-seitiges Routing
|
|
|
|
#### Umgebungsvariablen
|
|
|
|
Für die Produktion sollten Umgebungsvariablen in einer `.env.production`-Datei konfiguriert werden:
|
|
|
|
```
|
|
EXPO_PUBLIC_SUPABASE_URL=https://your-supabase-url.supabase.co
|
|
EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
|
|
EXPO_PUBLIC_OPENAI_API_KEY=your-openai-key
|
|
EXPO_PUBLIC_GOOGLE_API_KEY=your-google-key
|
|
```
|
|
|
|
#### Deployment-Prozess
|
|
|
|
1. **Web-Version erstellen**:
|
|
```bash
|
|
cd /pfad/zum/projekt
|
|
npx expo export
|
|
```
|
|
Dies erstellt die Web-Version im `dist`-Verzeichnis.
|
|
|
|
2. **Direkt über Netlify CLI deployen**:
|
|
```bash
|
|
netlify deploy --prod --dir=dist
|
|
```
|
|
Dieser Befehl lädt die Dateien direkt zu Netlify hoch und stellt sie in der Produktion bereit.
|
|
|
|
3. **Deployment-Status überprüfen**:
|
|
```bash
|
|
netlify status
|
|
```
|
|
Zeigt Informationen zur aktuellen Site an, einschließlich der URL.
|
|
|
|
#### Kontinuierliche Deployments
|
|
|
|
Für kontinuierliche Deployments kann das GitHub-Repository mit Netlify verbunden werden:
|
|
|
|
1. In der Netlify-Benutzeroberfläche: Site settings > Build & deploy > Continuous Deployment
|
|
2. GitHub-Repository verbinden
|
|
3. Build-Einstellungen konfigurieren (werden automatisch aus netlify.toml übernommen)
|
|
|
|
Dadurch wird bei jedem Push zum Hauptzweig automatisch ein neues Deployment ausgelöst.
|
|
|
|
### Mobile-Deployment mit EAS
|
|
|
|
Für mobile Apps wird Expo Application Services (EAS) verwendet:
|
|
|
|
#### Voraussetzungen
|
|
|
|
- EAS CLI installiert: `npm install -g eas-cli`
|
|
- Bei Expo angemeldet: `eas login`
|
|
- Apple Developer-Konto (für iOS) und/oder Google Play Developer-Konto (für Android)
|
|
|
|
#### Konfiguration
|
|
|
|
Die Konfiguration erfolgt über zwei Hauptdateien:
|
|
|
|
1. **app.json**:
|
|
```json
|
|
{
|
|
"expo": {
|
|
"name": "TextContext",
|
|
"slug": "textcontext",
|
|
"version": "1.0.0",
|
|
"owner": "tilljs",
|
|
"scheme": "textcontext",
|
|
"ios": {
|
|
"bundleIdentifier": "com.tilljs.textcontext",
|
|
"buildNumber": "1"
|
|
},
|
|
"android": {
|
|
"package": "com.tilljs.textcontext",
|
|
"versionCode": 1
|
|
},
|
|
"extra": {
|
|
"eas": {
|
|
"projectId": "416fc302-4a18-4fc4-b966-c974db622969"
|
|
}
|
|
},
|
|
"runtimeVersion": {
|
|
"policy": "appVersion"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
2. **eas.json**:
|
|
```json
|
|
{
|
|
"cli": {
|
|
"version": ">= 5.9.1"
|
|
},
|
|
"build": {
|
|
"development": {
|
|
"developmentClient": true,
|
|
"distribution": "internal",
|
|
"ios": {
|
|
"simulator": true
|
|
},
|
|
"android": {
|
|
"buildType": "apk"
|
|
}
|
|
},
|
|
"preview": {
|
|
"distribution": "internal",
|
|
"ios": {
|
|
"simulator": false
|
|
},
|
|
"android": {
|
|
"buildType": "apk"
|
|
}
|
|
},
|
|
"production": {
|
|
"autoIncrement": true
|
|
}
|
|
},
|
|
"submit": {
|
|
"production": {}
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Build-Prozess
|
|
|
|
1. **Projekt initialisieren** (falls noch nicht geschehen):
|
|
```bash
|
|
eas init
|
|
```
|
|
|
|
2. **Build für iOS erstellen**:
|
|
```bash
|
|
eas build --platform ios --profile preview
|
|
```
|
|
Für einen Simulator-Build: `--profile development`
|
|
Für einen App Store-Build: `--profile production`
|
|
|
|
3. **Build für Android erstellen**:
|
|
```bash
|
|
eas build --platform android --profile preview
|
|
```
|
|
|
|
4. **Status überprüfen**:
|
|
Der Build-Status kann in der Expo-Benutzeroberfläche oder mit dem Befehl `eas build:list` überprüft werden.
|
|
|
|
#### Updates verteilen
|
|
|
|
Mit EAS Update können JavaScript-Updates ohne neue App Store-Veröffentlichungen verteilt werden:
|
|
|
|
```bash
|
|
eas update --branch production --message "Update mit Token-Accounting-Funktionen"
|
|
```
|
|
|
|
#### App Store-Veröffentlichung
|
|
|
|
Für die Veröffentlichung im App Store oder Google Play Store:
|
|
|
|
```bash
|
|
eas build --platform ios --profile production
|
|
eas submit --platform ios
|
|
```
|
|
|
|
Für Android:
|
|
```bash
|
|
eas build --platform android --profile production
|
|
eas submit --platform android
|
|
```
|
|
|
|
#### Vorteile der EAS-Builds
|
|
|
|
- Automatisierte Builds in der Cloud ohne lokale Entwicklungsumgebung
|
|
- Einfache Verteilung von Testversionen über QR-Codes
|
|
- Nahtlose Integration mit Expo-Projekten
|
|
- Over-the-Air-Updates für schnelle Fehlerbehebungen
|
|
- Automatische Versionierung mit `autoIncrement`
|
|
|
|
## Tag-Funktionalität
|
|
|
|
TextContext bietet eine umfassende Tag-Funktionalität, die es Benutzern ermöglicht, Dokumente zu kategorisieren und schnell zu filtern:
|
|
|
|
### Tag-Verwaltung
|
|
|
|
1. **Hinzufügen und Entfernen von Tags**:
|
|
- Benutzer können Tags direkt im Dokumenteditor hinzufügen und entfernen
|
|
- Die Tags werden in Echtzeit in der Datenbank gespeichert
|
|
- Tags werden als Teil der Dokument-Metadaten gespeichert
|
|
|
|
2. **Tag-Anzeige**:
|
|
- Tags werden in der Dokumentvorschau angezeigt (oben rechts, neben dem Datum)
|
|
- Bei mehr als 2 Tags wird ein "+X"-Indikator angezeigt
|
|
- Tags haben ein konsistentes Design in der gesamten Anwendung
|
|
|
|
### Tag-Filterung
|
|
|
|
1. **Horizontale Tag-Pills**:
|
|
- Tags werden als horizontale, scrollbare Pills angezeigt
|
|
- Das Design ist konsistent mit den Space-Filtern auf der Startseite
|
|
- Ausgewählte Tags werden farblich hervorgehoben
|
|
- Ein "Alle Tags"-Button ermöglicht das schnelle Zurücksetzen der Filter
|
|
|
|
2. **Filterlogik**:
|
|
- Dokumente werden angezeigt, wenn sie alle ausgewählten Tags enthalten (UND-Verknüpfung)
|
|
- Die Tag-Filterung funktioniert nahtlos mit der bestehenden Dokumenttyp-Filterung
|
|
- Die Filterung erfolgt in Echtzeit
|
|
|
|
### Technische Implementierung
|
|
|
|
1. **Datenspeicherung**:
|
|
- Tags werden als Array in der `metadata`-Spalte der Dokumente gespeichert
|
|
- Die Struktur ermöglicht flexible Erweiterungen ohne Schemaänderungen
|
|
|
|
2. **Komponenten**:
|
|
- `DocumentTagsEditor`: Zum Hinzufügen und Entfernen von Tags im Dokumenteditor
|
|
- `DocumentTagsPills`: Zur Anzeige und Filterung von Tags auf der Space-Seite
|
|
- Wiederverwendung der `FilterPill`-Komponente für konsistentes Design
|
|
|
|
```typescript
|
|
// Beispiel für die Erstellung einer neuen Dokumentversion
|
|
const { data, error } = await createDocumentVersion(
|
|
originalDocumentId,
|
|
generatedText,
|
|
'summary', // Typ: summary, continuation, rewrite, ideas
|
|
'gpt-4.1', // Verwendetes Modell
|
|
promptText
|
|
);
|
|
```
|
|
|
|
Die neue Version enthält Metadaten über das Originaldokument, den verwendeten Prompt und das KI-Modell:
|
|
|
|
- **Metadaten**: Informationen über das Originaldokument, den Generierungstyp und das verwendete Modell
|
|
- **Versionshistorie**: Referenz zum Originaldokument und früheren Versionen
|
|
- **Titel**: Automatisch generierter Titel basierend auf dem Generierungstyp (z.B. "Zusammenfassung: Originaltitel")
|
|
|
|
### Typische KI-Workflows
|
|
|
|
1. **Textfortsetzung**:
|
|
- Dokument öffnen und Cursor an der gewünschten Position platzieren
|
|
- KI-Assistenten öffnen und "Text fortsetzen" wählen
|
|
- Generierten Text in das aktuelle Dokument einfügen oder als neue Version speichern
|
|
|
|
2. **Textzusammenfassung**:
|
|
- Dokument öffnen
|
|
- KI-Assistenten öffnen und "Zusammenfassen" wählen
|
|
- Zusammenfassung als neue Version speichern oder in das aktuelle Dokument einfügen
|
|
|
|
3. **Ideengenerierung**:
|
|
- Dokument öffnen
|
|
- KI-Assistenten öffnen und "Ideen generieren" wählen
|
|
- Generierte Ideen als neue Version speichern oder in das aktuelle Dokument einfügen
|
|
|
|
4. **Automatisierte Workflows**:
|
|
- Zeitgesteuerte Analysen
|
|
- Automatisierte Verarbeitung
|
|
|
|
5. **Erweiterte Suche**:
|
|
- Volltext-Suche
|
|
- Semantische Suche
|
|
|
|
## Entwicklungsrichtlinien
|
|
|
|
### Komponenten
|
|
|
|
- Neue UI-Komponenten sollten im entsprechenden Unterverzeichnis von `/components` erstellt werden
|
|
- Komponenten sollten typisiert sein (TypeScript)
|
|
- Styling mit NativeWind (TailwindCSS-Klassen)
|
|
|
|
### Styling
|
|
|
|
- Verwenden Sie TailwindCSS-Klassen für das Styling
|
|
- Dunkel-/Hellmodus wird unterstützt
|
|
|
|
### Routing
|
|
|
|
- Neue Seiten als Dateien im `/app`-Verzeichnis erstellen (Expo Router)
|
|
- Für verschachtelte Routen Unterverzeichnisse verwenden
|
|
|
|
### State Management
|
|
|
|
- Für einfache Zustände: React useState und useContext
|
|
- Für komplexere Zustände: Zustand nach Bedarf evaluieren
|
|
|
|
### API-Zugriff
|
|
|
|
- Supabase-Client für Datenbankzugriffe verwenden
|
|
- API-Aufrufe in separaten Funktionen kapseln
|
|
|
|
## Installationsanleitung
|
|
|
|
1. Repository klonen
|
|
2. Abhängigkeiten installieren: `npm install`
|
|
3. Entwicklungsserver starten: `npm start`
|
|
4. Expo Go App auf dem Mobilgerät öffnen und QR-Code scannen
|
|
|
|
## Beitragen
|
|
|
|
1. Fork des Repositories erstellen
|
|
2. Feature-Branch erstellen: `git checkout -b feature/neue-funktion`
|
|
3. Änderungen committen: `git commit -m 'Neue Funktion hinzugefügt'`
|
|
4. Branch pushen: `git push origin feature/neue-funktion`
|
|
5. Pull Request erstellen
|