collab-core — die Basis-Schicht der Collab-Suite.
collab-core liefert die gemeinsame Infrastruktur für Real-Time-Collaboration in TYPO3: Session-Management, Sync-Protokoll-Abstraktion und die Editor-übergreifenden Konventionen, auf denen collab-presence, collab-rte und hocuspocus aufsetzen. Coming soon — Inhalte und API-Dokumentation folgen, sobald das Paket für die öffentliche Bereitstellung freigegeben ist.
Architektur und Komponenten
collab-core sitzt als TYPO3-Backend-Komponente zwischen dem Browser-Editor (CKEditor 5 mit Yjs) und dem externen WebSocket-Server (moselwal/hocuspocus). Der Browser verbindet sich per WebSocket zum Hocuspocus-Server, der wiederum per REST plus JWT gegen die TYPO3-Backend-Routen von collab-core spricht.
Browser (CKEditor 5 + Yjs)
↓ WebSocket
moselwal/hocuspocus (Node, Port 1234)
↓ REST + JWT
TYPO3-Backend (collab-core)
├─ /api/collab/auth → AuthController::verifyAction
├─ /api/collab/doc/{load,store} → DocController
├─ /api/collab/presence → PresenceController::streamAction (SSE)
└─ /api/collab/presence/push → PresenceController::pushAction
Klassen-Inventar
| Klasse | Aufgabe |
|---|---|
Service\JwtService | HS256-JWT-Issuance und -Validierung. Token-Payload {sub, name, docId, iat, exp} mit 5 min TTL |
Service\DocIdService | Baut und parst deterministische Doc-IDs im Format {table}:{uid}:{fieldName} |
Service\PresenceService | Session-Tracking (User-Color-Allocation, Heartbeat, Stale-Purge nach 30 s) |
Repository\YdocRepository | LONGBLOB-Persistenz für Yjs-State-Vector in tx_collab_ydoc |
Controller\AuthController | Token-Verifikation für den Hocuspocus-WebSocket-Handshake |
Controller\DocController | Yjs-Document Load und Store für Hocuspocus |
Controller\PresenceController | SSE-Stream und Heartbeat-Push für die aktive Editor-Liste |
EventListener\ProvideCollabTokenListener | Injectet JWT und docId in die CKEditor-Konfiguration via BeforePrepareConfigurationForEditorEvent |
Datenbank-Schema
tx_collab_ydoc: doc_id (PK), ydoc_binary (LONGBLOB), updated_at
tx_collab_session: doc_id, be_user_uid, color, display_name, connected_at, last_seen
Voraussetzungen
- TYPO3 14.x, PHP 8.3+
$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']muss gesetzt sein — wird derzeit als HMAC-Secret für JWT-Signing wiederverwendet (dediziertes JWT-Secret ist im AUDIT als Empfehlung vermerkt)- Extension-Key
collab_core, NamespaceMoselwal\CollabCore, GPL-2.0-or-later
Real-Time-Collaboration in TYPO3 jetzt diskutieren?
Wenn Sie collab-core früh evaluieren oder die Collab-Suite als Ganzes in einer TYPO3-Plattform betreiben möchten, sprechen Sie uns an — wir koordinieren Early-Access, Architektur-Beratung und Integrationsfragen.
Oder direkt schreiben: kontakt@moselwal.de