collab-core — the base layer of the Collab Suite.

collab-core provides the shared infrastructure for real-time collaboration in TYPO3: session management, sync protocol abstraction and the editor-spanning conventions on which collab-presence, collab-rte and hocuspocus build. Coming soon — content and API documentation will follow once the package is cleared for public release.

Availability: coming soon — public release in preparation

The public release as a Composer package is currently in preparation. If you would like to use collab-core in your TYPO3 platform already, get in touch via the contact form — we currently ship it as part of platform engagements.

Architecture and components

collab-core sits inside the TYPO3 backend, between the browser editor (CKEditor 5 with Yjs) and the external WebSocket server (moselwal/hocuspocus). The browser opens a WebSocket connection to the Hocuspocus server, which in turn speaks REST plus JWT against the TYPO3 backend routes provided by collab-core.

 

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

 

Class inventory

ClassPurpose
Service\JwtServiceHS256 JWT issuance and validation. Token payload {sub, name, docId, iat, exp} with a 5-minute TTL
Service\DocIdServiceBuilds and parses deterministic doc IDs in the form {table}:{uid}:{fieldName}
Service\PresenceServiceSession tracking (user-colour allocation, heartbeat, stale purge after 30 s)
Repository\YdocRepositoryLONGBLOB persistence for the Yjs state vector in tx_collab_ydoc
Controller\AuthControllerToken verification for the Hocuspocus WebSocket handshake
Controller\DocControllerYjs document load and store for Hocuspocus
Controller\PresenceControllerSSE stream and heartbeat push for the active-editor list
EventListener\ProvideCollabTokenListenerInjects JWT and docId into the CKEditor configuration via BeforePrepareConfigurationForEditorEvent

Database 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

 

Requirements

Next step

Want to discuss real-time collaboration in TYPO3 now?

If you want to evaluate collab-core early or run the Collab Suite as a whole inside a TYPO3 platform, get in touch — we coordinate early access, architecture consulting and integration questions.

Discuss the collab setup

Or email us directly: kontakt@moselwal.de