DrawSync is a real-time collaborative whiteboard application based on Excalidraw. It enables multiple users to join the same room and collaborate on a shared project with real-time editing features.
- Create a room and invite multiple users.
- Real-time collaborative drawing and editing.
- WebSocket-based communication for seamless updates.
- TurboRepo monorepo structure for optimized development.
- Node.js (LTS version recommended)
- pnpm (Package manager) - Install via:
npm install -g pnpm
- Redis (Required for queue management)
- .env configuration (Create
.envfiles as required)
- Clone the repository:
git clone https://github.com/Maniteja0126/DrawSync.git cd DrawSync - Install dependencies:
pnpm install
- Set up environment variables:
- Ensure you have the required
.envfiles for frontend, backend, and WebSocket services. - Add a Redis connection URL in the backend environment files.
- Ensure you have the required
- Start the application:
pnpm run dev
- The services will be available at:
- Frontend:
http://localhost:3000 - HTTP Backend:
http://localhost:3001 - WebSocket Backend:
ws://localhost:8080
- Frontend:
- Docker (Latest version recommended)
- Docker Compose
- Clone the repository:
git clone https://github.com/Maniteja0126/DrawSync.git cd DrawSync - Set up environment variables:
- Create and configure the required
.envfiles. - Ensure Redis URL is set for queue management.
- Create and configure the required
- Build and run the services:
docker-compose up --build
- The services will be accessible at:
- Frontend:
http://localhost:3000 - HTTP Backend:
http://localhost:3001 - WebSocket Backend:
ws://localhost:8080
- Frontend:
DrawSync/
├── apps/
│ ├── frontend/ # Next.js frontend
│ ├── http-backend/ # Express-based backend API
│ ├── ws-backend/ # WebSocket backend service
│
├── packages/
│ ├── db/ # Prisma schema for PostgreSQL
│
├── docker/
│ ├── dockerfile.frontend
│ ├── dockerfile.http-backend
│ ├── dockerfile.ws-backend
│
├── docker-compose.yml # Root-level Docker Compose config
├── .env.example # Example environment variables
└── README.md # Project documentation
If you'd like to contribute, please fork the repository and create a pull request. Make sure to test your changes locally before submitting a PR.