Das Frontend ist eine moderne Next.js 15 App mit einem Chat-Interface für die Interaktion mit dem KI-Assistenten.
- 💬 Chat-Interface: Moderne Konversations-UI
- 🔐 Authentifizierung: Login/Register mit JWT
- 📊 User-Profil: Statistiken & Einstellungen
- 🔄 Session-Management: Mehrere Chat-Sessions parallel
- 🤖 Model-Selection: Wahl zwischen lokalem und Online-Modell
- 📎 Source-Anzeige: Verlinkte Quellen aus Neo4j
- 🎨 Markdown-Support: Formatierte Antworten mit Code-Highlighting
- Framework: Next.js 15 (App Router)
- UI: React 19, TailwindCSS
- State Management: React Hooks, LocalStorage
- Markdown: react-markdown, remark-gfm, rehype-prism
- HTTP: Native fetch API
# Komplettes System starten (inkl. Frontend)
docker-compose up
# Nur Frontend neu starten
docker-compose restart frontend
# Frontend Logs anzeigen
docker-compose logs -f frontendDas Frontend läuft dann auf http://localhost:3000.
Die Konfiguration erfolgt über Umgebungsvariablen in docker-compose.yml:
environment:
NEXT_PUBLIC_API_BASE_URL: http://localhost:8083
NODE_ENV: productionErstelle .env.local im Frontend-Ordner:
# Frontend/.env.local
# Backend API URL (überschreibt docker-compose)
NEXT_PUBLIC_API_BASE_URL=http://localhost:8083Frontend/
├── app/ # Next.js App Router
│ ├── page.tsx # Home/Chat Page
│ ├── auth/ # Login/Register
│ │ └── page.tsx
│ ├── layout.tsx # Root Layout
│ └── globals.css # Global Styles
├── components/ # React Components
│ ├── chat/ # Chat UI Components
│ │ ├── ChatComposer.tsx
│ │ ├── ChatHeader.tsx
│ │ ├── ChatMessage.tsx
│ │ ├── ChatMessageList.tsx
│ │ └── ChatSidebar.tsx
│ ├── ui/ # UI Components
│ │ ├── GeminiApiKeyModal.tsx
│ │ ├── Tooltip.tsx
│ │ └── UserProfileModal.tsx
│ └── ErrorBoundary.tsx # Error Handler
├── hooks/ # Custom React Hooks
│ └── useChatSession.ts # Chat State Management
├── lib/ # Utilities
│ └── services/ # API Services
│ ├── assistant.ts # LLM API
│ ├── auth.ts # Auth API
│ ├── chat.ts # Chat API
│ └── user.ts # User API
└── types/ # TypeScript Types
└── chat.ts
docker-compose up- Optimierter Build
- Beste Performance
- Code-Änderungen erfordern Rebuild
docker-compose -f docker-compose.dev.yml up- Automatisches Neuladen
- Schnellere Iteration
- Live-Editing
docker exec -it graph_frontend sh
# Im Container:
cd /app
ls -la# Live logs
docker-compose logs -f frontend
# Letzte 100 Zeilen
docker-compose logs --tail=100 frontend- Automatisches Speichern der Chat-Historie
- Mehrere Sessions parallel
- Session-Titel aus erster Nachricht
- Löschen von Sessions
- Automatisches Laden beim Start
- Local: THM KI-Box (120b) - Lokales LLM
- Online: Gemini Pro (Google) - Benötigt API Key
Modell-Wechsel ist jederzeit während eines Chats möglich.
- Statistiken: Nachrichten, Wörter, Tokens, Chats
- Profilbearbeitung: Name, E-Mail
- Gemini API Key Verwaltung
- Logout-Funktion
Wenn die KI Datenbank-Queries ausführt, werden relevante Neo4j-Entitäten als klickbare Links angezeigt.
# Container neu starten
docker-compose restart frontend
# Logs prüfen
docker-compose logs frontend
# Cache löschen
docker-compose down
docker volume rm graphenbasierte-systeme_frontend_next
docker-compose up --build frontend- Prüfe ob Backend läuft:
docker-compose ps - Teste Backend:
curl http://localhost:8083/api/docs - Prüfe
NEXT_PUBLIC_API_BASE_URLin docker-compose.yml
Siehe Hauptdokumentation (Troubleshooting-Sektion) für Lösungen zu Browser-Extension-Konflikten.
Das Frontend kommuniziert mit folgenden Backend-Endpunkten:
POST /auth/login- LoginPOST /auth/register- RegistrierungGET /users/profile- User-ProfilGET /users/chats- Chat-SessionsGET /users/chats/:id- Nachrichten einer SessionPOST /users/messages- Neue Nachricht speichernPOST /assistant/request- KI-AnfrageGET /assistant/models- Verfügbare Modelle
Siehe lib/services/ für API-Service-Implementierungen.
Credits: Für das Frontend-Design und Verbindung zum Backend habe ich GitHub Copilot genutzt. - Khaled Abuhaltam