19 KiB
AuthorBuddy.Web – Dokumentation
Inhaltsverzeichnis
- Überblick
- Funktionsübersicht
- Systemarchitektur
- Installation & Einrichtung
- Bedienung
- Datenbank
- Themes & Lokalisierung
- LLM-Backends
- Technische Referenz
1. Überblick
AuthorBuddy.Web ist eine webbasierte Schreibumgebung für Autoren mit KI-Unterstützung. Die Anwendung läuft als Blazor Interactive Server (.NET 10.0) und nutzt lokale Large Language Models (LLMs) über Ollama oder llama.cpp für Textanalyse, Lektorat, Faktenabfrage und kreative Zusammenarbeit.
Daten werden in einer eingebetteten LiteDB-Datenbank (NoSQL) gespeichert – es wird kein externes Datenbanksystem benötigt.
Zielgruppen
- Autoren & Schriftsteller – Romanvorlage mit Kapitelverwaltung, Exposé, Charakterentwicklung
- Requirements Engineers – Technische Vorlage für Lastenheft, Pflichtenheft, Use Cases uvm.
- Administratoren – Benutzerverwaltung mit 2FA, Datenbank-Administration
2. Funktionsübersicht
| Funktion | Beschreibung |
|---|---|
| Projektverwaltung | Zwei Vorlagen: Roman (mit Drafts, Fakten, Charakteren, Archiv) und Technisch (mit Anforderungen, Use Cases, Architektur, Glossar) |
| Markdown-Editor | Vollbild-Editor mit Autosave, Versionierung, Diff-Ansicht |
| KI-Assistent | Mehrere Modi: Lektorat, Advocatus Diaboli, Hook-Finder, ELI5, Co-Author, RAG-Faktenabfrage |
| Technische Assistenten | Lastenheft, Pflichtenheft, Use Cases, Stakeholder-Analyse, Glossar, Qualitätsanforderungen, Risikoanalyse |
| Rechtschreibprüfung | KI-gestützte Korrektur über LLM |
| Stilanalyse | KI-gestütztes Lektorat |
| RAG (Retrieval-Augmented Generation) | Volltext-Suche über Projektdateien mit Embedding-Vektoren |
| Wikipedia-Recherche | Integrierte Wikipedia-Suche (DE/EN) mit „Als Fakt speichern" |
| Datei-Kategorien | Markdown-Dateien können als Charakter, Exposé, Fakt oder Dokument getaggt werden |
| Benutzerverwaltung | Multi-User mit Passwort-Hashing und TOTP-2FA |
| Modellverwaltung | LLM-Modelle via Ollama herunterladen und verwalten |
| Zwei Backends | Ollama (vollständig) und llama.cpp (OpenAI-kompatibel) |
| Mehrere Themes | Hell, Dunkel, Windows 95 Retro |
| Zweisprachig | Deutsch (Standard) und Englisch |
| DB-Admin | Datenbank-Tabellen einsehen, bearbeiten und löschen (nur Admin) |
3. Systemarchitektur
3.1 Technologie-Stack
| Komponente | Technologie |
|---|---|
| Framework | .NET 10.0 – Blazor Interactive Server |
| Sprache | C# 13 |
| UI | Razor Components, CSS Custom Properties |
| Datenbank | LiteDB 5.0 (eingebettetes NoSQL-Dokumenten-DB) |
| Text-Diff | DiffPlex 1.9 |
| Authentifizierung | Cookie-basiert mit ClaimsPrincipal |
| 2FA | TOTP (Time-based One-Time Password) |
3.2 Schichtenarchitektur
┌─────────────────────────────────────────────┐
│ Pages (.razor) │
│ Editor, Assistant, Settings, Models, ... │
├─────────────────────────────────────────────┤
│ Shared Components │
│ CategorySelector, CopyCreateToolbar, │
│ DiffView, RedirectToLogin │
├─────────────────────────────────────────────┤
│ Services │
│ AuthService │ OllamaService │
│ SettingsService │ ProjectService │
│ RagService │ WikipediaService │
│ ThemeService │ LocalizationService │
│ DbAdminService │ FileScannerService │
│ OllamaSetupService │
├─────────────────────────────────────────────┤
│ Backends (ILLMBackend) │
│ OllamaBackend │ LlamaCppBackend │
├─────────────────────────────────────────────┤
│ Daten (LiteDB) │
│ UserEntity, ProjectEntity, SettingEntity, │
│ FileCategoryEntity, DocumentVector, │
│ DocumentMetaEntity │
└─────────────────────────────────────────────┘
3.3 Abhängigkeits-Injektion (DI)
Die Anwendung verwendet das integrierte DI-System von ASP.NET Core:
- Singleton (
AddSingleton):ILiteDatabase,OllamaSettings,IOllamaService,ILLMBackend(beide),IProjectService,IRagService,IWikipediaService,IOllamaSetupService,IFileScannerService,OperationState,IDbAdminService - Scoped (
AddScoped):ISettingsService,IThemeService,IAuthService,ILocalizationService,CustomAuthStateProvider
4. Installation & Einrichtung
4.1 Voraussetzungen
- .NET 10.0 SDK oder höher
- Ollama (empfohlen) oder llama.cpp für LLM-Unterstützung
- Ein moderner Webbrowser (Chrome, Edge, Firefox)
4.2 Schnellstart
# Repository klonen
git clone <repository-url>
cd AuthorBuddy.Web
# Bauen
dotnet build
# Starten
dotnet run
Die Anwendung ist standardmäßig unter http://localhost:5000 erreichbar.
4.3 LLM-Modelle einrichten
- Ollama installieren (https://ollama.com) oder llama.cpp konfigurieren
- Modelle pullen, z.B.:
ollama pull llama3.2,ollama pull nomic-embed-text - In der Anwendung unter Einstellungen → Modelle die Modelle auswählen
- Verbindung testen mit dem Test-Button
4.4 Erstmaliger Start
Beim ersten Start wird automatisch ein Admin-Benutzer erstellt. Über den Setup-Assistenten (/setup-assistant) können die empfohlenen Einstellungen übernommen werden.
5. Bedienung
5.1 Projektverwaltung
Neues Projekt anlegen:
- Klicke auf Datei → Neues Projekt in der Seitenleiste
- Wähle eine Vorlage:
- 📖 Roman – Erzeugt Ordner für Drafts, Fakten, Charaktere, Archiv sowie Exposé- und Ideen-Vorlagen
- ⚙️ Technische Vorlage – Erzeugt Ordner für Anforderungen, Use Cases, Architektur, Glossar sowie Lastenheft- und Pflichtenheft-Vorlagen
- Vergib einen Projektnamen und wähle einen Speicherort
- Klicke auf Erstellen
Projekt öffnen:
In der Seitenleiste unter Projekte werden alle vorhandenen Projekte aufgelistet. Ein Klick öffnet das Projekt im Editor.
Projekt kopieren:
Rechtsklick (oder Kontextmenü) auf ein Projekt → Projekt kopieren – erstellt eine vollständige Kopie inkl. Dateistruktur, Kategorien und projektspezifischer Einstellungen.
5.2 Editor
Der Editor (/editor) ist der zentrale Arbeitsbereich.
Funktionen:
| Funktion | Beschreibung |
|---|---|
| Text eingeben | Markdown-Editor im Vollbildmodus |
| Autosave | Speichert automatisch alle 2 Sekunden |
| Manuell speichern | Strg+S oder Klick auf Speichern |
| Versionierung | Klick auf Version erstellt einen Snapshot im Unterordner _versions/ |
| Versionen durchsuchen | Versionen → Liste aller Snapshots mit Kommentar |
| Diff-Ansicht | Vergleichen zeigt Side-by-Side-Diff zwischen Versionen |
| Version wiederherstellen | Wiederherstellen lädt eine alte Version in den Editor |
| Stil prüfen | KI-Analyse des Schreibstils über das Stil-Modell |
| Rechtschreibung prüfen | KI-Korrektur über das Spelling-Modell |
| RAG-Suche | Durchsucht indexierte Projektinhalte nach ähnlichen Passagen |
| Wikipedia-Suche | Durchsucht Wikipedia (DE+EN) und kann Ergebnisse als Fakten speichern |
| Assistent | Öffnet den KI-Assistenten mit dem aktuellen Text als Eingabe |
| Projekt indexieren | Baut den Vektorindex für RAG auf (nach Projektänderungen nötig) |
Datei-Kategorien:
Im Dateibaum können .md-Dateien mit Kategorien versehen werden:
- 👤 Charakter – Personenprofil
- 📋 Exposé – Handlungsübersicht (nur eine Datei pro Projekt)
- 📌 Fakt – Hintergrundinformation
- 📄 Dokument – Allgemeines Dokument
Kategorien werden im Dateibaum als Badge angezeigt und können über das 🏷-Symbol bearbeitet werden.
5.3 Assistent
Der KI-Assistent (/assistant) bietet mehrere Arbeitsmodi:
Roman-Modi: (immer verfügbar)
| Modus | Beschreibung | Temp. |
|---|---|---|
| Lektorat | Stilistische Textoptimierung – lebendiger, anschaulicher Stil | 0.7 |
| Advocatus Diaboli | Radikale Gegenposition – Schwachstellen in der Argumentation | 0.9 |
| Hook-Finder | 5 emotionale Einstiegssätze für den Text | 0.9 |
| ELI5 | Vereinfachung komplexer Passagen | 0.5 |
| Co-Author | Kreative Weiterentwicklung von Handlung/Charakteren | 1.0 |
| RAG | Faktenabfrage aus dem projekteigenen Index | 0.3 |
Technische Modi: (nur bei technischer Projektvorlage sichtbar)
| Modus | Beschreibung | Temp. |
|---|---|---|
| 📋 Lastenheft | Erstellung eines Lastenhefts nach IREB-Standard | 0.3 |
| ⚙️ Pflichtenheft | Detailliertes Pflichtenheft mit technischer Umsetzung | 0.3 |
| 🔄 Use Cases | UML-Use-Case-Modellierung mit Akteuren und Abläufen | 0.4 |
| 👥 Stakeholder-Analyse | Identifikation und Analyse aller Projekt-Stakeholder | 0.5 |
| 📖 Glossar | Fachglossar mit Definitionen und Synonymen | 0.2 |
| ✅ Qualitätsanforderungen | Qualitätsanforderungen nach ISO 25010 | 0.3 |
| ⚠️ Risikoanalyse | Identifikation und Bewertung von Projektrisiken | 0.5 |
Prompt-Editor:
Jeder Modus hat einen konfigurierbaren System-Prompt. Klicke auf Prompt bearbeiten, um den Prompt für die aktuelle Session anzupassen. Mit Zurücksetzen wird der Standard-Prompt aus den Einstellungen geladen.
Temperatur:
Der Temperatur-Regler beeinflusst die Kreativität des Modells:
- 0.0–0.2: Präzise, deterministisch
- 0.3–0.5: Ausgewogen, faktennah
- 0.6–1.2: Kreativ, überraschende Wendungen
- 1.3–2.0: Chaotisch, experimentell
Exposé-Kontext:
In den Modi Lektorat, Co-Author und Hook-Finder wird automatisch das per Kategorie markierte Exposé als Kontext in den Prompt eingefügt.
5.4 Einstellungen
Die Einstellungsseite (/settings) ist in vier Spalten organisiert:
| Spalte | Inhalt |
|---|---|
| Links (Admin) | Modelle, Ollama-Server, Diagnose, Design, Sprache |
| Mitte-Links | Lektor-System-Prompt, Fact-Check-Vorlage, Rechtschreibungs-Prompt |
| Mitte-Rechts | Advocatus Diaboli, Hook-Finder, ELI5, Co-Author |
| Rechts | Alle 7 technischen Prompts mit Temperatur |
Projektkontext:
Wenn ein Projekt geladen ist, werden die Einstellungen für dieses Projekt gespeichert. Ohne Projekt gelten die benutzerspezifischen Einstellungen.
5.5 Modellverwaltung
Die Modellverwaltung (/models) zeigt alle lokal vorhandenen Ollama-Modelle mit Größe und Änderungsdatum an. Neue Modelle können direkt heruntergeladen werden:
- Modellname eingeben (z.B.
llama3.2,mistral,gemma4) - Auf Herunterladen klicken
- Der Fortschritt wird in Echtzeit angezeigt
5.6 Benutzerverwaltung
Die Benutzerverwaltung (/user-management) ist nur für Administratoren zugänglich:
- Liste aller Benutzer mit Rolle und Status
- Benutzer aktivieren/deaktivieren
- Benutzer löschen (der eigene Account kann nicht gelöscht werden)
Zwei-Faktor-Authentifizierung (2FA):
Jeder Benutzer kann 2FA einrichten:
- Unter Einstellungen → 2FA einrichten QR-Code scannen
- Geheimen Schlüssel notieren
- Code zur Bestätigung eingeben
5.7 Datenbank-Administration
Die DB-Admin-Seite (/db-admin) ist Administratoren vorbehalten und erlaubt:
- Auswahl der Datenbank-Tabelle (users, projects, settings, fileCategories, documentMeta, vectors)
- Anzeige aller Datensätze in einer Tabelle
- Bearbeiten von Feldwerten (Öffnet Bearbeitungs-Modal)
- Löschen von Datensätzen (mit Bestätigungsdialog)
Achtung: Hier können kritische Daten verändert oder gelöscht werden. Nur durchführen, wenn du genau weißt, was du tust.
6. Datenbank
Die Anwendung verwendet LiteDB – eine eingebettete NoSQL-Dokumentendatenbank. Die Datenbankdatei (author_brain.db) liegt im Ausführungsverzeichnis der Anwendung.
6.1 Collections
| Collection | Entity | Zweck |
|---|---|---|
users |
UserEntity |
Benutzerkonten mit Passwort-Hash und 2FA-Secret |
projects |
ProjectEntity |
Projekte mit Name, Pfad, Besitzer und Vorlagentyp |
settings |
SettingEntity |
Key-Value-Einstellungen (global/benutzer-/projektspezifisch) |
fileCategories |
FileCategoryEntity |
Datei-Kategorie-Zuordnungen |
documentMeta |
DocumentMetaEntity |
Metadaten indexierter Dokumente (Hash, Änderungsdatum) |
vectors |
DocumentVector |
Embedding-Vektoren für die RAG-Suche |
6.2 Einstellungshierarchie
Einstellungen werden mit absteigender Priorität aufgelöst:
- Projektspezifisch (
UserId+ProjectIdgesetzt) - Benutzerspezifisch (
UserIdgesetzt,ProjectIdnull) - Global (beide null)
7. Themes & Lokalisierung
7.1 Themes
Drei CSS-Themes stehen zur Verfügung:
| Theme | Beschreibung |
|---|---|
| Hell (Standard) | Helles Farbschema mit blauen Akzenten |
| Dunkel | Dark Mode, inspiriert von VS Code |
| W95 | Windows 95 Retro-Stil |
Die Theme-Umschaltung erfolgt durch dynamisches Einfügen eines <link>-Elements in den Seitenkopf.
7.2 Lokalisierung
Unterstützte Sprachen:
- Deutsch (
de) – Standard - Englisch (
en)
Die Übersetzungen liegen als JSON-Dateien im Ordner Resources/. Die Sprachumschaltung erfolgt in den Einstellungen und wird sofort wirksam. Für nicht gefundene Schlüssel gibt es eingebaute deutsche Fallback-Texte.
8. LLM-Backends
8.1 Ollama (Standard)
- Status: Voll unterstützt
- Modellverwaltung: Ja (Pull, Delete)
- API: REST (
/api/generate,/api/embeddings,/api/tags,/api/pull,/api/delete,/api/show) - Standard-URL:
http://localhost:11434
8.2 llama.cpp
- Status: Basisfunktionen unterstützt
- Modellverwaltung: Nein
- API: OpenAI-kompatibel (
/v1/chat/completions,/v1/models) +/embedding,/slots - Standard-URL:
http://localhost:8080
Voreingestellte Modelle (in OllamaSettings):
| Modell | Zweck |
|---|---|
gemma4:e4b |
Stil-Analyse (Lektorat) |
nomic-embed-text |
Embeddings (RAG) |
phi3:mini |
Rechtschreibprüfung |
9. Technische Referenz
9.1 Routen
| Route | Seite | Zugriff |
|---|---|---|
/ |
Dashboard | Authentifiziert |
/login |
Anmeldung | Öffentlich |
/register |
Registrierung | Öffentlich |
/editor |
Editor | Authentifiziert |
/editor/index/{id} |
Editor mit Projekt | Authentifiziert |
/editor/newproject |
Editor mit Erstell-Dialog | Authentifiziert |
/assistant |
KI-Assistent | Authentifiziert |
/settings |
Einstellungen | Authentifiziert |
/models |
Modellverwaltung | Authentifiziert |
/user-management |
Benutzerverwaltung | Authentifiziert |
/setup-2fa |
2FA einrichten | Authentifiziert |
/setup-assistant |
Setup-Assistent | Authentifiziert |
/db-admin |
DB-Administration | Authentifiziert (Admin) |
/not-found |
404 | Öffentlich |
/Error |
500 | Öffentlich |
9.2 NuGet-Pakete
- DiffPlex 1.9.0 – Text-Differencing für die Diff-Ansicht
- LiteDB 5.0.21 – Eingebettete NoSQL-Dokumentendatenbank
9.3 Schlüssel-Klassen
| Namespace | Klasse | Zweck |
|---|---|---|
Models |
Constants |
App-Konstanten (DB-Name, Ordnerstruktur) |
Models |
OllamaSettings |
Zentrale Konfiguration (Singleton) |
Models |
ProjectTemplate |
Vorlagentyp (Novel, Technical) |
Models |
FileCategory |
Datei-Kategorien als Flags-Enum |
Models |
FileTreeItem |
Baumstruktur für Projektdateien |
Data |
UserEntity |
Benutzer-DB-Entity |
Data |
ProjectEntity |
Projekt-DB-Entity |
Data |
SettingEntity |
Einstellungs-DB-Entity |
Data |
DocumentVector |
Embedding-Vektor-DB-Entity |
Services |
AuthService |
Authentifizierung mit 2FA |
Services |
SettingsService |
Einstellungs-Verwaltung |
Services |
ProjectService |
Projekt-CRUD |
Services |
OllamaService |
LLM-Kommunikation (Fassade) |
Services |
RagService |
RAG-Indexierung und -Suche |
Services |
DbAdminService |
DB-Administration |
9.4 Wichtige Konstanten
Constants.DbFile // "author_brain.db"
Constants.SubFolders // Standard-Ordnerstruktur (Referenz)
Projekt-Ordnerstruktur bei Roman-Vorlage:
{rootPath}/
├── 00_Drafts/
├── 01_Fakten/
├── 02_Characters/
├── 03_Archive/
├── 00_Projekt_Info.md
├── Die Handlung (Das Exposé).md
└── Ideen Sammlung.md
Projekt-Ordnerstruktur bei Technischer Vorlage:
{rootPath}/
├── 00_Anforderungen/
├── 01_UseCases/
├── 02_Architektur/
├── 03_Glossar/
├── 00_Projekt_Info.md
├── Lastenheft.md
└── Pflichtenheft.md
10. Entwicklung & Erweiterung
10.1 Neuen Assistenten-Modus hinzufügen
- Prompt-Default in
Models/OllamaSettings.cs(DE + EN + Temp) - Settings-Key in
Services/SettingsService.cs(Key-Konstante + Getter/Setter) - Interface-Methoden in
Services/ISettingsService.cs - Settings-UI in
Components/Pages/Settings.razor - Mode-Dropdown +
LoadPromptForModeinComponents/Pages/OllamaAssistant.razor - Lokalisierung in
Resources/de.json+Resources/en.json - DB-Seeding in
SettingsService.InitializeAsync()+LoadProjectSettingsAsync()
10.2 Neues Daten-Modell hinzufügen
- Entity-Klasse in
Data/anlegen - Collection-Namen in
Services/DbAdminService.KnownCollectionsaufnehmen - Service-Methoden für CRUD-Operationen schreiben
- Bei Bedarf UI-Komponente erstellen
Dokumentation erstellt am 31.05.2026