Ein Full-Stack-Projekt zur Erforschung graphbasierter Analysen mithilfe von Generativer KI. Das System kombiniert eine moderne Chat-Oberfläche, ein intelligentes Backend zur Orchestrierung und einen spezialisierten MCP-Server für den Zugriff auf historische Graphdaten (Neo4j).
Das Projekt verfolgt einen Microservices-Ansatz und besteht aus drei Hauptkomponenten:
- Frontend (
Frontend/):
- Technologie: Next.js 15 App.
- Funktion: Bietet die Benutzeroberfläche für den Chat und die Visualisierung von Quellen.
- Backend (
Backend/):
- Technologie: NestJS App.
- Funktion: API-Gateway und Orchestrator. Verwaltet Benutzer & Authentifizierung (JWT), speichert Chat-Verläufe in PostgreSQL und kommuniziert mit dem LLM (Gemini) sowie dem MCP-Server.
- MCP Server (
MCPServer/):
- Technologie: Python (FastMCP).
- Funktion: Stellt die Verbindung zur Neo4j Graphdatenbank her und bietet Tools (
read_database,search_nodes_by_text) für das LLM an.
.
├─ Backend/ # NestJS App (API Gateway & Orchestrierung)
│ ├─ README.md # Detaildoku Backend
│ ├─ src/
│ └─ .env # Konfiguration (DB, Gemini, MCP-URL)
├─ Frontend/ # Next.js 15 App (UI)
│ ├─ README_Frontend.md
│ └─ app/, components/
└─ MCPServer/ # Python MCP Server (Neo4j Tools)
├─ src/
│ └─ server.py
└─ requirements.txt
- Neo4j: Beinhaltet die historischen Graphdaten (Briefe, Personen, Beziehungen).
- PostgreSQL: Speichert relationale Daten wie Benutzer (User, Hash-Passwörter) und die Chat-Historie.
Die Anwendung bietet eine vollständige Benutzerverwaltung. Beim ersten Besuch wirst du zur Login-Seite (/auth) weitergeleitet.
- Registrieren: Neues Konto mit E-Mail und Passwort erstellen.
- Anmelden: Login mit bestehendem Konto (JWT Token wird lokal gespeichert).
- Demo-Login: Schnellzugriff zum Testen ohne Registrierung (User:
demo@example.com).
Die einfachste Methode, das gesamte System zu starten.
- Docker & Docker Compose installiert.
- Zugang zu einer Neo4j Instanz (oder lokale Konfiguration in
docker-compose.yml). - Optional: Google Gemini API Key (für Online-Modell).
# Komplettes System im Production-Mode starten
docker-compose up --buildDies startet alle Services optimiert für Production:
- ✅ Optimierte Builds (Frontend & Backend)
- ✅ Schnellerer Start nach erstem Build
- ✅ Keine Hot-Reload / File-Watching
⚠️ Code-Änderungen erfordern Rebuild
Services:
- PostgreSQL Container (Port 5435)
- MCP Server (Port 8000)
- Backend (Port 8083) - Production Build
- Frontend (Port 3000) - Optimierter Next.js Build
Die Web-App ist dann unter http://localhost:3000 erreichbar.
Für aktive Entwicklung mit automatischem Neuladen bei Code-Änderungen:
# Development-Modus mit Hot-Reload
docker-compose -f docker-compose.dev.yml up --buildVorteile:
- ✅ Automatisches Neuladen bei Dateiänderungen
- ✅ Schnellere Iteration während Entwicklung
- ✅ Live TypeScript-Compilation
⚠️ Langsamere Performance als Production
# Nur Backend neu bauen
docker-compose up --build backend
# Nur Frontend neu bauen
docker-compose up --build frontend
# Services stoppen
docker-compose down
# Services stoppen + Volumes löschen (Datenbank-Reset)
docker-compose down -vAlle notwendigen Konfigurationen sind bereits in docker-compose.yml enthalten!
Für produktive Umgebungen solltest du nur folgende Werte anpassen:
Backend Environment Variables:
environment:
DB_PASS: your_secure_password # ⚠️ Ändern!
JWT_SECRET: your_secure_jwt_secret # ⚠️ Ändern!MCP Server Environment Variables:
environment:
NEO4J_URI: neo4j+ssc://your-neo4j-host:7687
NEO4J_PASSWORD: your_neo4j_password # ⚠️ Ändern!Falls du Werte überschreiben möchtest, erstelle Backend/.env:
# Backend/.env (OPTIONAL - überschreibt docker-compose Werte)
# Gemini API Key für Online-Modell
GEMINI_API_KEY=AIzaSy...
# Request Logging für Debugging
ENABLE_FILE_LOGGING=trueHinweis: Siehe Backend/.env.example für Template.
Das Frontend benötigt nur eine Variable, die in docker-compose.yml bereits gesetzt ist:
environment:
NEXT_PUBLIC_API_BASE_URL: http://localhost:8083# Alle Container Logs
docker-compose logs -f
# Nur Backend
docker-compose logs -f backend
# Nur Frontend
docker-compose logs -f frontend# Status aller Container
docker-compose ps
# Ressourcen-Nutzung
docker stats graph_backend graph_frontend sozinianer-mcp# Backend Container Shell
docker exec -it graph_backend sh
# Frontend Container Shell
docker exec -it graph_frontend sh
# Datenbank Shell
docker exec -it graph_project_postgres psql -U postgres -d graph_project# Alle Volumes löschen (inkl. Datenbank)
docker-compose down -v
# Neu starten
docker-compose up --buildFür spezifische Themen siehe:
- 📦 Docker Details: DOCKER.md - Vollständiger Docker Guide
- 🐛 Troubleshooting Backend: Backend/TROUBLESHOOTING.md
- 🔧 Backend Architektur: Backend/README.md
- 🎨 Frontend Details: Frontend/README_Frontend.md
Production Mode (Standard):
# 1. Code ändern
# 2. Container neu bauen
docker-compose up --build backend # oder frontendDevelopment Mode (schnellere Iteration):
# Hot Reload aktiviert - keine Rebuilds nötig
docker-compose -f docker-compose.dev.yml up# Backend Tests
docker exec -it graph_backend pnpm test
# Frontend Tests
docker exec -it graph_frontend pnpm testUrsache: Race Condition zwischen Session-Erstellung und Assistant-Aufruf.
Lösung: Dieser Fehler wurde behoben (v1.1.0). Die Session wird jetzt vollständig im Backend gespeichert, bevor der Assistant aufgerufen wird. Falls der Fehler weiterhin auftritt:
- Cache leeren (Strg+Shift+R)
- Prüfe ob Backend und Frontend auf dem gleichen Stand sind
- Überprüfe die Browser-Konsole auf zusätzliche Fehler
Ursache: Browser-Extensions (z.B. Avast, Bitdefender) interferieren mit React's DOM-Manipulation.
Lösung:
- Deaktiviere temporär Antivirus/Security-Extensions während der Entwicklung
- Die Fehler beeinflussen nicht die Funktionalität der App
- In Production-Builds sind diese Fehler weniger sichtbar
Siehe ausführliche Debugging-Anleitung:
- Backend Issues: Backend/TROUBLESHOOTING.md
- Docker Issues: DOCKER.md