drawdb-io / drawdb-io/drawdb

Feature: Session-Based Collaboration (Phase 1 MVP — manual push/pull session)

Open
#813 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
39.5k
Forks
3.2k
Avg merge
10h 46m
Merged PRs (30d)
16

Description

## Summary
Add a lightweight "collaboration session" feature that allows multiple users to share a diagram via a session ID and manually push/pull the diagram JSON. This is Phase 1 (manual sync) toward a future real-time collaboration feature.

## Motivation
Currently users must export/import diagrams to collaborate. A manual session-based sync will allow quick team edits with minimal engineering changes and no WebSocket/OT/CRDT complexity.

## Proposed behavior (MVP)
- Host clicks "Create Session" -> a session ID + shareable link is generated.
- Collaborators open the link -> diagram loads from the session (if present).
- Buttons available: "Pull Latest" (import session JSON) and "Push My Changes" (overwrite session JSON).
- Backend storage is a simple JSON blob store (Supabase / Firebase / serverless DB).
- "Last push wins" semantics for conflict resolution (no merges in Phase 1).
- Optional: auto-expire sessions after N hours/days.

## Why this is incremental-friendly
- Uses existing export/import JSON functions.
- No canvas internals or cursor syncing changes.
- Provides tangible user value and paves way for future real-time features.

## Implementation hints (for maintainers/contributors)
- Add a Collaboration modal in the toolbar.
- Create simple REST calls: POST /session, GET /session/:id, PUT /session/:id backed by Supabase or similar.
- Add URL param support: `?session=` for quick join.
- UI should warn if Pull will overwrite local unsaved changes.

I can implement Phase 1 and open a PR if this seems acceptable. Thanks!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.