UniVault - Universelles Dokumenten- und Wissens-Management-System
Find a file
2026-04-06 00:48:39 +02:00
README.md Initial: UniVault Projektplan und Architektur 2026-04-06 00:48:39 +02:00

UniVault - Universelles Dokumenten-/Wissens-Management-System

Context

Es gibt kein bestehendes Open-Source-Tool das universelle Dateispeicherung, direktes Erstellen von Inhalten, universelle Format-Konvertierung und einen einheitlichen Viewer kombiniert. Dieses Projekt schliesst diese Luecke als selbst-gehostete Loesung auf dem bestehenden Unraid-Server.

Architektur

Tech Stack

  • Backend: NestJS 11 (TypeScript) + Prisma 6 ORM
  • Datenbank: MySQL 8+ (bestehend auf 192.168.155.11)
  • Frontend: Nuxt 3 + Vue 3 + Nuxt UI (Tailwind CSS)
  • Editor: TipTap 2 (Rich Text, Tabellen, Bilder, Checklisten)
  • Konvertierung: Sharp (Bilder), Pandoc (Dokumente), LibreOffice headless (Office)
  • OCR: Tesseract 5 (deutsch)
  • Deployment: Ein Docker-Container, docker-compose fuer Portainer

Datenmodell

  • Dual-Storage: Metadaten in MySQL, Dateien auf Filesystem (/data/vault/{uuid}/)
  • Direkte Eintraege: TipTap JSON als kanonisches Format (verlustfrei zu HTML/PDF/DOCX konvertierbar)
  • Uploads: Original-Datei wird byte-genau aufbewahrt (Fidelity-Garantie)
  • Metadaten: Titel, Beschreibung, Tags, Kategorien (hierarchisch), Custom Fields, Datum
  • Versionierung: Lineare Snapshots in DocumentVersion-Tabelle

Konvertierungs-Engine

Tool Input Output
Sharp JPEG, PNG, WebP, TIFF, GIF, SVG JPEG, PNG, WebP, TIFF, BMP
Pandoc MD, HTML, DOCX, ODT, EPUB DOCX, ODT, PDF, HTML, MD, TXT
LibreOffice DOCX, XLSX, PPTX, ODS, ODT, CSV, legacy Office PDF, DOCX, XLSX, ODS, CSV, Bilder

Konvertierungs-Routing: Direct entries -> TipTap JSON -> HTML (static renderer) -> Pandoc -> Zielformat

Frontend-Seiten

  • Dashboard (letzte Dokumente, Schnellaktionen)
  • Dokumentenliste (Suche, Filter, Grid/List-Ansicht)
  • Dokumentendetail (UniversalViewer + Metadaten-Sidebar)
  • Editor (TipTap fuer neue/bestehende Eintraege)
  • Tag/Kategorie-Verwaltung

Universal Viewer (nach MIME-Type)

  • ImageViewer (Bilder) -> <img> mit Zoom
  • PdfViewer (PDF) -> pdf.js
  • RichTextViewer (Direkte Eintraege) -> TipTap read-only
  • OfficeViewer (Office-Docs) -> Server-seitig zu PDF konvertiert
  • TextViewer (TXT, CSV, MD) -> Syntax-Highlighting
  • FallbackViewer -> Metadaten + Download-Button

MVP (Phase 1) - Was zuerst gebaut wird

  1. Projekt-Scaffold: NestJS Backend + Nuxt Frontend + Prisma Schema + Dockerfile
  2. Dokument-CRUD: Erstellen, Lesen, Bearbeiten, Loeschen mit Metadaten
  3. Datei-Upload: Drag-and-drop, Speicherung auf Filesystem
  4. TipTap Editor: Rich Text fuer direkte Eintraege (Rezepte, Briefe, etc.)
  5. Universal Viewer: Bilder, PDFs, Rich Text, Fallback-Download
  6. Tags + Kategorien: Flache Tags, einfache Kategorien
  7. Volltextsuche: MySQL FULLTEXT auf Titel + Beschreibung + extrahiertem Text
  8. Basis-Export: TipTap->PDF, TipTap->DOCX (Pandoc), Bild-Format-Konvertierung (Sharp)
  9. Docker-Deployment: Ein Container mit allen Deps, docker-compose fuer Portainer
  10. Deutsche UI: Standard-Sprache Deutsch

Phase 2 - Nach funktionierendem MVP

  • Volle Konvertierungs-Matrix (LibreOffice fuer Office-zu-Office, Spreadsheets, Legacy-Formate)
  • OCR-Pipeline (Tesseract fuer gescannte PDFs/Bilder, Deutsch)
  • Thumbnail-Generierung fuer alle Dateitypen
  • Text-Extraktion aus PDFs und Office-Docs
  • Dokument-Versionierung
  • Hierarchische Kategorien (Baumstruktur)

Phase 3 - Nice-to-Have

  • Custom Fields pro Dokument/Kategorie
  • Bulk-Operationen (Multi-Select, Massen-Tagging)
  • Template-System (Vorlagen fuer Rezepte, Briefe, Berichte)
  • Duplikat-Erkennung (SHA-256)
  • Papierkorb mit 30-Tage-Aufbewahrung
  • Watch-Folder (Auto-Import aus ueberwachtem Verzeichnis)

Kritische Dateien

  • prisma/schema.prisma - Datenbankschema (Grundlage fuer alles)
  • src/conversion/conversion.service.ts - Konvertierungs-Routing (komplexestes Stueck)
  • src/documents/documents.service.ts - Kern-CRUD mit Dateihandling
  • components/UniversalViewer.vue - Viewer-Strategie nach MIME-Type
  • Dockerfile - Container mit LibreOffice, Pandoc, Tesseract

Verifikation

  1. docker-compose up startet den Container erfolgreich
  2. Frontend erreichbar unter http://192.168.155.1:8420
  3. Dokument erstellen (direkt + Upload) funktioniert
  4. Tags/Kategorien zuweisen und danach filtern
  5. Volltextsuche findet Inhalte
  6. Export: Direkter Eintrag als PDF und DOCX herunterladen
  7. Bild hochladen und in anderem Format exportieren