https://github.com/blackhatinside/pydrago
Collaborative Diagramming Tool with CRDT
https://github.com/blackhatinside/pydrago
Last synced: 2 months ago
JSON representation
Collaborative Diagramming Tool with CRDT
- Host: GitHub
- URL: https://github.com/blackhatinside/pydrago
- Owner: blackhatinside
- Created: 2025-03-01T11:30:01.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-03-01T11:32:50.000Z (over 1 year ago)
- Last Synced: 2025-03-01T12:26:06.471Z (over 1 year ago)
- Language: TypeScript
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PyDraGo
A collaborative diagramming tool built with Django, React Flow, and CRDT (Conflict-free Replicated Data Types).
## Project Overview
PyDraGo allows multiple users to work simultaneously on diagrams with real-time synchronization. It uses Y-CRDT (via y-py on the backend and Yjs on the frontend) to manage concurrent operations without conflicts.
## Technology Stack
- **Backend**: Django, Django Channels, y-py (Python bindings for Y-CRDT)
- **Frontend**: React, React Flow, Yjs
- **Communication**: WebSockets
## Setup Instructions
1. Clone the repository
2. Create and activate virtual environment:
```
python -m venv MyEnv
source MyEnv/bin/activate # Unix/Linux
# OR
.\MyEnv\Scripts\activate # Windows
```
3. Install dependencies:
```
pip install -r requirements.txt
```
4. Run migrations:
```
python manage.py migrate
```
5. Start the server:
```
python manage.py runserver
```
## Project Structure
```
pydrago/
├── core/ # Main Django app
│ ├── consumers.py # WebSocket consumers
│ ├── models.py # Data models
│ ├── views.py # API views
│ └── ...
├── pydrago/ # Django project settings
│ ├── asgi.py # ASGI configuration for WebSockets
│ ├── settings.py # Project settings
│ └── ...
└── frontend/ # React frontend
└── ...
```
## Change Log
### Version 0.2.0 (Frontend Implementation)
- Added React frontend with React Flow integration
- Implemented Yjs provider for CRDT synchronization
- Created diagram editor with collaborative editing capabilities
- Added undo/redo functionality
- Implemented custom nodes and edges
### Version 0.1.0 (Initial Setup)
- Created Django project and core app
- Set up basic project structure
- Added requirements.txt and initial documentation