This is a real-time collaboration platform built with WebRTC, Node.js, React, Redis, and Socket.io. It enables users to create and join rooms, establish peer-to-peer (P2P) connections, and collaborate on a shared canvas.
- Room Management: Rooms are created and stored in Redis, allowing users to join existing sessions.
- Peer-to-Peer Communication: WebRTC enables direct video and audio streaming between participants.
- Real-time Canvas Collaboration: Users can draw and interact on a shared canvas (excalidraw board).
- Socket.io Signaling: Manages real-time communication for room events and peer connections.
- Scalable Architecture: Redis ensures efficient room tracking and session management.
- Secure Access: Authentication ensures only authorized users can join rooms.
- User-Friendly Interface: A clean, modern frontend enhances the collaboration experience.
After joining a room, users can see video streams and collaborate on a canvas.
- Frontend: React.js, zustand (leveraging Bolt.new for UI efficiency with custom styling)
- Backend: Node.js, Express
- Real-time Communication: WebRTC, Socket.io
- Data Storage: Redis, MongoDB
Ensure you have Node.js, npm, and Redis installed. You can also use online Redis services like Upstash instead of running a local Redis server. If you are using Windows, consider setting up WSL (Windows Subsystem for Linux) for better compatibility.
git clone https://github.com/vinitngr/RTCboard.git
cd RTCboard
# /RTCboard
npm run build # build project
npm run start # runs the whole project on the provided backend port :3001
cd server
npm install
cd client
npm install
redis-server
# or
sudo systemctl start redis-server # background
cd server
npm run dev
cd client
npm run dev
- Signup using email and password
- Open the application in the browser.
- Create a new room or join an existing one using Room ID and password.
- Share the Room ID and password with participants.
- Connect with peers for video/audio communication.
- Collaborate on the shared canvas in real time.