Workspaces & Collaboration
Workspaces are the primary unit of collaboration in inboard. Each workspace groups related documents and has its own set of members with defined roles.
Workspace roles
Section titled “Workspace roles”| Role | Permissions |
|---|---|
| View | Read workspace content. Cannot modify documents or manage members. |
| Edit | Read and modify workspace content. Cannot manage members. |
| Admin | Full access. Can manage members, modify content, and configure the workspace. |
The workspace owner (creator) has implicit Admin permissions and is the only user who can delete the workspace.
Creating a workspace
Section titled “Creating a workspace”curl -X POST http://localhost:8080/api/v1/workspaces \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "Q1 Planning", "description": "Quarterly planning documents"}'Managing members
Section titled “Managing members”Add a member:
curl -X POST http://localhost:8080/api/v1/workspaces/{id}/members \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"user_id": "user-uuid", "role": "edit"}'Update a member’s role:
curl -X PUT http://localhost:8080/api/v1/workspaces/{id}/members/{user_id} \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"role": "admin"}'Remove a member:
curl -X DELETE http://localhost:8080/api/v1/workspaces/{id}/members/{user_id} \ -H "Authorization: Bearer $TOKEN"Local-first documents
Section titled “Local-first documents”Documents in inboard are local-first. This means:
- Content is stored on user machines, not on the server.
- The server manages access control, determining who can view or edit each workspace.
- Real-time collaboration uses WebSocket connections to relay sync traffic between clients.
- The server never stores document content. If the server is unavailable, users can continue working locally and sync when it comes back.
Threads
Section titled “Threads”Workspaces support threaded discussions. Threads can be resolved to track completed conversations.
# Create a threadcurl -X POST http://localhost:8080/api/v1/workspaces/{id}/threads \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"content": "Should we revise the revenue forecast?"}'
# Add a commentcurl -X POST http://localhost:8080/api/v1/workspaces/{id}/threads/{tid}/comments \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"content": "Yes, updated numbers are in the latest model."}'
# Resolve a threadcurl -X PATCH http://localhost:8080/api/v1/workspaces/{id}/threads/{tid} \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"resolved": true}'Real-time sync
Section titled “Real-time sync”The inboard app connects to the collaboration server via WebSocket:
UPGRADE /api/room/{workspace_id}?token=JWTThis connection handles real-time document synchronization between all connected clients.
API reference
Section titled “API reference”See Workspace API for the complete endpoint reference.