Collaboration
Applies to: Pro · Enterprise
Last updated: 17-Jul-2025
Overview
Kazinex Collaboration lets multiple team members work on the same schedule simultaneously in real time. Changes sync instantly between all participants — you see each other's cursors, edits, and selections as they happen. The entire session runs over secure WebSocket connections with end-to-end encryption, and no schedule data ever passes through Kazinex servers in readable form.
How It Works
Collaboration in Kazinex uses conflict-free replicated data types (CRDTs) powered by the Yjs library. When the host starts a session, a shared document is created and connected to a relay server. Every participant's browser maintains its own copy of the schedule, and Yjs automatically merges changes from all peers without conflicts.
Architecture at a Glance
| Component | Technology | Purpose |
|---|---|---|
| Shared document | Yjs (Y.Doc) | Conflict-free data synchronisation |
| Transport | y-websocket via WebSocket | Real-time change relay |
| Relay server | Fly.io (wss://kazinex-signaling.fly.dev) | Routes messages between peers |
| Offline cache | y-indexeddb | Persists session locally for reconnection |
| Awareness | Yjs awareness protocol | Cursor tracking and presence |
All schedule data stays encrypted in transit. The relay server forwards binary Yjs updates between peers but cannot read the schedule content.
Starting a Session (Host)
- Open your schedule in the Activities tab.
- Click the Collaborate button in the toolbar (purple theme).
- Choose the default permission level for guests (see Sharing & Permissions).
- Click Start Session.
Kazinex generates a unique invite URL containing:
- A room ID (
kazinex-<uuid>) identifying the session - An encryption key (32-byte random, Base64-encoded) for data security
Both values are placed in the URL hash fragment (the part after #), which is never sent to any server.
Example invite URL:
https://app.kazinex.com/xertool#room=kazinex-a1b2c3d4-...&key=dGhpcyBpcyBhbi...
Click Copy Invite Link to share it with your team.
Joining a Session (Guest)
- Open the invite URL in your browser.
- Kazinex automatically detects the
roomandkeyparameters. - The app performs a server health check, then connects to the session.
- The host's schedule data syncs to your browser (typically under 5 seconds).
- Once synced, you can start viewing and editing based on your permissions.
You can also join manually:
- Click Join in the collaboration toolbar.
- Paste the invite URL into the dialog.
- Click Connect.
Connection States
| State | Indicator | Description |
|---|---|---|
| Disconnected | Grey | Not in a session |
| Connecting | Processing spinner | Establishing WebSocket connection |
| Connected | Green dot | Session active and syncing |
| Reconnecting | Processing spinner | Temporarily lost connection, auto-retrying |
| Error | Red | Connection failed after retries |
Kazinex automatically reconnects if the connection drops. If you enabled offline persistence, your local changes are preserved and merged when reconnection succeeds.
What Gets Synced
Kazinex synchronises 13 data collections across all participants:
- Activities and their field values
- Relationships (dependencies)
- WBS hierarchy
- Calendars and calendar data
- Resources and resource assignments
- Activity codes, code values, and code assignments
- User-defined fields and their values
- Project metadata (name, data date, schedule options)
Not synced: Calculated fields like float paths and driving-path flags — these are computed locally on each participant's browser after schedule recalculation.
Collaboration Panel
When connected, a side panel appears on the right edge of the screen.
| Width | State |
|---|---|
| 44 px | Collapsed — shows icon strip only |
| 424 px | Expanded — full chat or history view |
The panel provides two tabs:
- Chat — real-time text messaging with all participants (see Chat)
- History — a live feed of all changes made by every peer (see Change History)
A gradient accent bar (indigo → sky → cyan) appears at the top of the panel.
Leaving a Session
- Click the Leave button in the collaboration toolbar.
- Confirm in the dialog.
When you leave:
- Your cursor and presence indicators disappear for other participants.
- The session continues for remaining participants.
- Your local copy of the schedule is preserved.
If the host leaves, other participants can continue editing — the Yjs document remains on the relay server until all peers disconnect.
Tips & Best Practices
- Share the invite link via a private channel — anyone with the link and key can join the session.
- Set appropriate permissions before sharing — the default guest permission level applies to all new joiners.
- Enable offline persistence for long sessions — if your connection drops, your changes won't be lost.
- Recalculate after bulk changes — press F9 after major edits to refresh the critical path across all participants.
Troubleshooting
| Issue | Solution |
|---|---|
| "Connection failed" error | Check your internet connection. The relay server requires WebSocket support — some corporate proxies block WSS traffic. |
| Session won't start | Ensure you have an active Pro or Enterprise subscription. |
| Guest can't connect | Verify the invite URL is complete (both room and key parameters). |
| Changes not appearing | Check the connection indicator. If "Reconnecting", wait for it to return to "Connected". |
| Stale data after reconnect | Press F9 to recalculate. Yjs merges structural data automatically, but CPM results need a manual refresh. |