Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LaxXx-DMS (Dokumenten Management System)

Ein modernes, webbasiertes Dokumentenmanagementsystem mit Python (Flask), integriertem OnlyOffice und KI-gestuetztem RAG-Chatbot zur Beantwortung von Fragen ueber Dokumentinhalte.

Features

  • Dokumentenverwaltung: Upload, Download, Versionierung, Loeschen, Batch-Operationen
  • Vorschau: Integrierte Vorschau fuer Office-Dokumente, PDF, Bilder, Videos, Code und ZIP-Archive
  • OnlyOffice Integration: Bearbeiten von Office-Dokumenten (Word, Excel, PPTX) direkt im Browser
  • KI-Chatbot (RAG): Stelle Fragen zu deinen Dokumenten - der Chatbot durchsucht NUR deine eigenen und freigegebenen Dokumente. Unterstuetzt native APIs von OpenAI, Anthropic (Claude), Google Gemini, OpenRouter sowie lokale Ollama-Modelle.
  • Hintergrund-Verarbeitungsmanager (GUM): Live-Statusanzeige fuer Upload und RAG-Indexierung mit verbleibender Zeit (ETA), Minimierungsfunktion (Session-Persistent) sowie "Verarbeitung stoppen"-Knopf zum Abbrechen aller Tasks.
  • Premium Design-Themes: Waehlbare Oberflaechen (LaxXx Standard, LX Lab Spec Tokyo-Night, Nordic Executive Light/Dark, Obsidian Pro Luxury Black, Rose Bloom, Aurora Glass) im Benutzerprofil.
  • Rechtssicherer GoBD-Audit-Trail: Lückenloses Aktivitäts-Logbuch (/admin/logs) für Administratoren zur Nachverfolgung aller Aktionen (Uploads, Löschungen, Dokument-Freigaben, Workflow-Genehmigungen und Systemeinstellungen).
  • Berechtigungen (ACL): Benutzer, Gruppen (Leader/Deputy/Member), Freigaben an User & Gruppen
  • Workflows: Genehmigungs-Workflows mit Genehmigungs- (Approve) und Ablehn-Optionen (Reject).
  • Admin-Panel: Nutzerverwaltung, Kategorien, System-Einstellungen, Gruppenverwaltung, Aktivitäts-Protokoll
  • Wiki (Extension): Plugin-basiertes Gruppen-Wiki mit Kommentaren und Suche
  • Echtzeit-Updates: Socket.IO fuer Live-Benachrichtigungen

Tech-Stack

Bereich Technologie
Backend Python 3.11, Flask 3.0
Datenbank SQLite (dev) / PostgreSQL 16 + pgvector (prod)
ORM SQLAlchemy + Flask-Migrate
WSGI Waitress (Windows) / Gunicorn (Linux)
Hintergrund-Queue Redis + RQ (Redis Queue) fuer asynchrone Dokumentenverarbeitung
Echtzeit Flask-SocketIO + eventlet
Office OnlyOffice Document Server
KI / RAG OpenAI, Ollama (lokal), OpenRouter, Anthropic (Claude), Google Gemini
Frontend Bootstrap 5, FontAwesome 6, Jinja2, Custom CSS
Container Docker Compose (App + Worker + PostgreSQL + Redis + OnlyOffice)
CI/CD GitHub Actions (Tests + Build)

Schnellstart

Mit Docker (empfohlen)

git clone https://github.com/patrikharms-a11y/LaxXx-DMS
cd LaxXx-DMS

Führe einfach das für dein Betriebssystem passende Start-Skript aus. Dieses erstellt automatisch die erforderlichen Ordner (uploads/, instance/), setzt die Schreibrechte und konfiguriert die .env-Datei inklusive automatischer Erkennung deiner Host-IP für OnlyOffice:

Linux / macOS:

./start_with_docker.sh

Windows: Doppelklick auf start_with_docker.bat oder in der CMD:

start_with_docker.bat

Das System startet die Container im Hintergrund und gibt am Ende die passenden URLs für das DMS und den OnlyOffice-Server aus (z. B. http://localhost:5000).

Ohne Docker

pip install -r requirements.txt
# .env konfigurieren (s.o.)
python app.py

Login

Standard-Admin beim ersten Start:

  • Benutzer: admin
  • Passwort: admin123 (oder via ADMIN_INITIAL_PASSWORD in .env)

Bitte nach dem ersten Login aendern!

KI-Chatbot (RAG) & Multi-Provider

Der Chatbot (/chat) beantwortet Fragen basierend auf deinen Dokumentinhalten. Die Berechtigungen (ACL) werden dabei strikt beachtet: Der Bot sieht NUR Dokumente, die du selbst hochgeladen hast oder die dir/deinen Gruppen freigegeben wurden.

Die Einstellungen koennen flexibel ueber die Admin-Einstellungen (/admin/settings) in der UI oder via .env konfiguriert werden:

  • LLM-Provider: Waehle zwischen ollama (lokal/selbstgehostet), openai, openrouter, anthropic (Claude) und gemini.
  • Automatische Embedding-Routung:
    • Wenn lokale Embedding-Modelle (wie nomic-embed-text oder bge-large-en) konfiguriert sind, weicht die App automatisch auf die lokale Ollama-Instanz aus, selbst wenn als Haupt-Chatbot-Provider ein Cloud-Dienst wie OpenAI/Anthropic/Gemini eingestellt ist.
    • Wenn ein Cloud-Embedding-Modell wie text-embedding-3-small (OpenAI) oder text-embedding-004 (Gemini) eingetragen ist, wird die Anfrage entsprechend an deren Cloud-Endpoints geroutet.

Beispielkonfiguration fuer Cloud-Provider in .env:

# Aktiver Provider (ollama, openai, openrouter, anthropic, gemini)
LLM_PROVIDER=openai

# API-Keys (nur eintragen, was gebraucht wird)
OPENAI_API_KEY=sk-proj-...
ANTHROPIC_API_KEY=sk-ant-...
GEMINI_API_KEY=AIzaSy...
OPENROUTER_API_KEY=sk-or-v1-...

# Modellauswahl
CHAT_MODELS=gpt-4o-mini, claude-3-5-sonnet, gemini-1.5-flash
EMBEDDING_MODEL=text-embedding-3-small

Indexierung: Dokumente werden automatisch beim Upload und nach OnlyOffice-Bearbeitung im Hintergrund indexiert. PDFs mit mehr als 300 Seiten überspringen die ressourcenintensive Layout-Analyse mit Docling und nutzen automatisch den schnellen Standard-PDF-Text-Fallback, um Speicherüberläufe (OOM-Kills) zu verhindern.

Konfiguration

Alle Einstellungen ueber Umgebungsvariablen (.env) oder das Admin-Panel (/admin/settings):

Variable Beschreibung Default
SECRET_KEY Flask Secret Key Zufallswert
FLASK_ENV development oder production production
DATABASE_URL SQLite oder PostgreSQL URL sqlite:///instance/dms.db
REDIS_URL Redis Verbindungs-URL fuer die persistente Task-Queue -
ONLYOFFICE_SECRET OnlyOffice JWT Secret -
ONLYOFFICE_URL OnlyOffice Server URL http://localhost:8080/
DMS_EXTERNAL_URL URL unter der OnlyOffice DMS erreicht http://localhost:5000
LLM_PROVIDER Aktiver RAG/Chatbot Provider (ollama, openai, openrouter, anthropic, gemini) ollama
OPENAI_API_KEY OpenAI API Key (fuer Chat & Embeddings) -
ANTHROPIC_API_KEY Anthropic Claude API Key -
GEMINI_API_KEY Google Gemini API Key -
OPENROUTER_API_KEY OpenRouter API Key -
EMBEDDING_MODEL Modell fuer Vektor-Embeddings nomic-embed-text
CONCURRENCY Anzahl paralleler Extraktionsthreads im lokalen Pool (Fallback-Modus) 1
ADMIN_INITIAL_PASSWORD Admin-Passwort bei Ersteinrichtung admin123
MAX_UPLOAD_MB Max. Upload-Groesse in MB 500
LOG_LEVEL Logging-Level INFO

Produktivbetrieb

# .env anpassen:
FLASK_ENV=production
DATABASE_URL=postgresql://user:pass@host:5432/dms
SESSION_COOKIE_SECURE=true
RATELIMIT_ENABLED=true

# Starten (Docker):
docker-compose up -d

# Oder mit Gunicorn (Linux):
gunicorn -w 4 -b 0.0.0.0:5000 app:app

# Mit Waitress (Windows):
python -c "from waitress import serve; from app import app; serve(app, host='0.0.0.0', port=5000)"

Projektstruktur

LaxXx-DMS/
├── app.py                  # Hauptanwendung
├── config.py               # Konfiguration (dotenv-basiert)
├── logger.py               # Zentrales Logging
├── models.py               # Datenbank-Modelle (inkl. pgvector)
├── filters.py              # Jinja2-Template-Filter
├── blueprints/
│   ├── __init__.py
│   └── chat.py             # RAG-Chatbot Blueprint
├── extensions/
│   └── wiki/               # Wiki Extension Plugin
├── templates/              # HTML-Templates (Jinja2)
│   └── chat.html           # Chat-Interface
├── static/                 # CSS, JS, FontAwesome
├── tests/                  # Pytest Test Suite
├── .github/workflows/      # CI/CD (GitHub Actions)
├── docker-compose.yml      # Docker Compose (PostgreSQL + App + OnlyOffice)
├── Dockerfile              # Container-Build
├── .env                    # Umgebungsvariablen (NICHT committen!)
└── requirements.txt        # Python-Abhaengigkeiten

Tests

pip install pytest pytest-flask
python -m pytest tests/ -v

Migration

Bei Aenderungen an den Datenbank-Modellen:

flask db init          # Einmalig
flask db migrate -m "Beschreibung"
flask db upgrade

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages