# 🦉 Multichat Zentraler Multiplattform-Chatserver mit lokaler GUI und Plugin-Schnittstelle ## 🧩 Übersicht **Multichat** ist ein eigenständiges System zur Verwaltung und Anzeige mehrerer Chat-Plattformen in einer Oberfläche. Es ermöglicht das gleichzeitige Empfangen und Senden von Nachrichten über **Twitch**, **YouTube**, **Kick** und weitere Dienste. Das Projekt besteht aus einem gemeinsamen Code-Kern, einer universellen GUI und zwei Laufzeitvarianten: > **Server-Version (LXC / Linux):** > Dauerhaft laufender Dienst mit Web-GUI und API für externe Tools. > **Desktop-Version (Windows / macOS / Linux):** > Electron-basierte Anwendung mit integrierter GUI, ideal für Streamer ohne Serverumgebung. ## ⚙️ Aufbau Die Projektstruktur ist modular aufgebaut, um Server- und Desktop-Variante auf derselben Codebasis zu betreiben. ``` core/ ├─ adapters/ → Plattformadapter (Twitch, YouTube, Kick, Generic) ├─ messageHandler/ → Verarbeitung, Parsing und Routing von Chatnachrichten ├─ storage/ → Temporäre Speicherung (Redis / Lokale JSON-Dateien) ├─ api/ → REST- und WebSocket-Schnittstellen └─ utils/ → Logging, Error Handling, Helper-Funktionen gui/ ├─ components/ → UI-Elemente (Chatfenster, Tabs, Einstellungsdialoge) ├─ views/ → Reiter / Seiten (Chat, Verbindungen, Einstellungen) ├─ services/ → Verbindung zur Core-API via WebSocket └─ assets/ → Icons, CSS, Branding server/ ├─ index.js → Einstiegspunkt für Headless-Start ├─ webserver.js → Express-Server für Web-GUI └─ config.json → Serverkonfiguration (Ports, Tokens, Plattformen) desktop/ ├─ main.js → Electron-Main-Prozess ├─ preload.js → Brücke zwischen GUI und Node.js-Core └─ package.json → App-Metadaten und Build-Skripte config/ ├─ connections.yml → Plattform-Logins und Tokens ├─ preferences.yml → GUI-Layout, Sprache, Moderationsoptionen └─ license.json → Lizenz- und Aktivierungsinformationen ``` ## 🎛️ Funktionen - Gleichzeitige Verbindung zu mehreren Plattformen - Einheitliche Darstellung aller Chats - Live-Moderation (Clear, Timeout, Mods-Only, Ban) - Reconnect- und Fehlerhandling - Plugin-Schnittstelle (WebSocket / API) für **OBS** und **TouchPortal** - Lizenzmodell: **Light** (Anzeige) und **Premium** (volle Steuerung) - Erweiterbare Plattformadapter über `core/adapters/` ## 🧠 Zielsetzung Ziel ist eine stabile, lokal ausführbare Lösung zur Chatverwaltung für Streamer, die unabhängig von Cloud-Diensten und externer Software arbeiten möchten. Alle Daten verbleiben ausschließlich auf der eigenen Instanz oder im lokalen System. Der modulare Aufbau ermöglicht langfristig auch die Einbindung zusätzlicher Dienste oder APIs. ## 📦 Lizenz / Versionen | Variante | Beschreibung | |-----------|--------------| | **Light** | Nur Anzeige des Chats (lesend) | | **Premium** | Voller Funktionsumfang inkl. Verwaltung und Moderation | | **Server** | Für LXC / Homelab-Installationen | | **Desktop** | Für Windows / macOS / Linux (Electron) | ## 🔧 Status > **Projektphase:** Initialentwicklung (Core-Struktur + Basis-Adapter) > **Laufzeitumgebung:** Node.js 20 LTS > **Maintainer:** Thomas Dannenberg