Full Real-Time Collaboration: Every Panel Now Syncs
The rink board collaboration system now syncs rosters, scoring, penalties, shifts, faceoffs, practice plans, and more between connected users. Everyone can edit everything.
When two coaches connect to a rink board collaboration room, they should see the same thing. Previously, only the canvas (players and drawings), basic scoreboard, and Arena DJ state synced between users. Everything else — rosters, goals, penalties, shifts, faceoffs, practice plans — was local to each browser.
That changes now. Every panel syncs in real time.
What Now Syncs
| Data | Before | Now |
|---|---|---|
| Canvas (players, drawings) | Synced | Synced |
| Scoreboard (scores, period, clock, SOG) | Synced | Synced |
| Game View toggle | Synced | Synced |
| Arena DJ state | Partial | Full sync (playlists + playback) |
| Rosters (home, away, staff) | Local only | Synced |
| Lines (forward, defense, PP/PK) | Local only | Synced |
| Scoring log (goals, assists) | Local only | Synced |
| Penalty log | Local only | Synced |
| Shift tracking (TOI, active shifts) | Local only | Synced |
| Faceoff tracker | Local only | Synced |
| Goalie stats & active goalies | Local only | Synced |
| Shootout rounds | Local only | Synced |
| Team colors | Local only | Synced |
| Game info (date, venue, officials) | Local only | Synced |
| Practice plan | Local only | Synced |
| Period clock running state | Local only | Synced |
Everyone Can Edit
Previously, only the room host could edit the scoreboard — collaborators were locked out of score buttons, clock controls, and game info. That restriction is removed. Now all connected users can:
- Log goals and penalties
- Start and stop the period clock
- Track shifts and faceoffs
- Edit rosters and lines
- Modify the practice plan
- Change team colors
This is trust-based, like a shared Google Doc. Spectators (via spectator links) remain read-only.
How It Works
The collaboration system uses Trystero (WebRTC via Nostr relay) for serverless peer-to-peer communication. No data touches any server — everything goes directly between browsers.
When any user makes a change, the state is broadcast to all connected peers within 100ms. A broadcast loop prevention system ensures that receiving remote state doesn't trigger another broadcast. Each data category has its own getter/setter pair with automatic UI refresh.
The full state payload is approximately 15-35 KB depending on how many rosters, goals, and shifts are logged. WebRTC handles this comfortably.
Arena DJ Collaboration
The Arena DJ now syncs playlist URLs between collaborators. If the host sets up stoppage and intermission playlists, collaborators automatically receive them. Playback state (playing/paused, current track, position) syncs so everyone hears the same music at the same time.
Getting Started
- Open the Rink Board
- Click the Online button in the toolbar
- Enter your name and click Create Room
- Share the 6-character room code with your co-coach
- They join with the code — everything syncs instantly
For spectators (parents, fans), click Spectator Link to copy a URL that anyone can open to watch the live scoreboard and chat.