This project is a real-time collaborative whiteboard, allowing users to draw and interact with each other through a shared canvas. It includes various tools and customization features to provide a rich drawing experience.
- Real-Time Drawing: Multiple users can draw simultaneously on the canvas, and all actions are synchronized in real-time.
- Color Selection: Two different types of color pickers are available (Circle and Swatch), allowing users to easily pick from a wide range of colors.
- Brush Size Selection: Users can customize the brush size using a range slider to fit their drawing needs.
- Brush Types: The whiteboard supports different brush types:
- Normal
- Blurred
- Dotted
- Clear Canvas: Users can clear the entire whiteboard with a single button.
- Simple UI: The user interface is clean, with easy access to all tools, including color pickers, brush settings, and more.

The project is deployed and accessible at:
https://real-time-whiteboard-sand.vercel.app
- Frontend: React, TypeScript, Tailwind CSS, Ant Design
- Backend: Node.js, Socket.io for real-time communication
- Deployment: Vercel for hosting the front-end, making it accessible globally
- Clone the repository:
git clone https://github.com/yourusername/real-time-whiteboard.git cd real-time-whiteboard
- Install the dependencies:
npm install
- Start the server:
npm run dev
- Open your browser and navigate to
http://localhost:3000
to use the whiteboard locally.
-
Open the Whiteboard
Start a new session or join an existing one. -
Draw and Customize
Use colors, brush sizes, and pencil types to enhance your drawing. -
Collaborate in Real Time
Share the session link with others to draw together live. -
Create or Join a Session
- Start New: Click "Start New Whiteboard" to generate a link.
- Join: Paste an existing link into the form and join the session.
-
Responsive Design:
Enhance the whiteboard's UI and layout to ensure it is fully responsive and functional on different screen sizes and devices, including tablets and smartphones.
- Optimize canvas rendering for smaller screens.
- Adjust UI components for touch interactions.
- Ensure a seamless experience on both portrait and landscape orientations.
Contributions are welcome! If you'd like to improve or add features, please fork the repository and submit a pull request.