DrawHub is a modern, collaborative whiteboard application that enables teams to create, share, and collaborate on visual ideas in real-time. Built with React and Node.js, DrawHub provides a powerful digital canvas with professional drawing tools and seamless collaboration features.
DrawHub transforms the way teams brainstorm, design, and work together. Whether you're sketching ideas, creating diagrams, or collaborating on visual projects, DrawHub provides an intuitive and powerful platform for visual collaboration.
- Pencil Tool with advanced settings:
- Customizable thinning, streamline, smoothing, and easing
- Adjustable stroke width and colors
- Shape Tools: Line, Rectangle, Circle
- Text Tool with adjustable font sizes
- Color Palette: Extensive color selection for strokes and fills
- Fill Styles: Multiple fill pattern options
- Undo/Redo: Full history management
- Create, save, and organize multiple canvases
- Personal dashboard to manage all your canvases
- Canvas sharing via email invitation
- View and manage shared users per canvas
- Secure canvas access control
- Modern UI: Clean, responsive design with dark mode support
- Intuitive Interface: Easy-to-use toolbar and toolbox
- Real-time Updates: Instant canvas synchronization
- User Authentication: Secure registration and login system
- Profile Management: Update user information and passwords
- Multiple users editing simultaneously on the same canvas
- Live cursor tracking and presence indicators
- Instant updates across all connected users
- Conflict-free collaborative editing
- Add contextual comments to specific areas of the canvas
- Threaded discussions for better collaboration
- @mentions and notifications
- Comment resolution and management
- React 19 - Modern UI library
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- Radix UI - Accessible component primitives
- Perfect Freehand - Smooth drawing library
- Rough.js - Hand-drawn style graphics
- React Router - Client-side routing
- Axios - HTTP client
- Node.js - JavaScript runtime
- Express - Web framework
- PostgreSQL - Relational database
- Slonik - PostgreSQL client
- Passport.js - Authentication middleware
- JWT - Token-based authentication
- bcrypt - Password hashing
- Express Validator - Input validation
- Node.js (v18 or higher)
- PostgreSQL (v12 or higher)
- npm or yarn
- Navigate to the backend directory:
cd backend- Install dependencies:
npm install- Create a
.envfile in the backend directory with the following variables:
PORT=3000
DATABASE_URL=postgresql://username:password@localhost:5432/drawhub
JWT_SECRET=your-secret-key-here
NODE_ENV=development- Run database migrations:
npm run migrate- Start the development server:
npm run dev- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Create a
.envfile in the frontend directory:
VITE_API_URL=http://localhost:3000- Start the development server:
npm run devThe application will be available at http://localhost:5173 (or the port Vite assigns).
com.sic.WhiteBoard/
├── backend/
│ ├── controllers/ # Request handlers
│ │ ├── CanvasControllers/
│ │ └── UserControllers/
│ ├── models/ # Data models and queries
│ ├── routes/ # API routes
│ ├── migrations/ # Database migrations
│ ├── utils/ # Utility functions
│ └── config/ # Configuration files
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ │ ├── Board/ # Canvas component
│ │ │ ├── Toolbar/ # Toolbar component
│ │ │ ├── Toolbox/ # Toolbox component
│ │ │ └── GoLiveTool/# Sharing component
│ │ ├── pages/ # Page components
│ │ ├── store/ # State management
│ │ └── utils/ # Utility functions
│ └── components/ # UI components
└── Readme.md
cd backend
npm testcd frontend
npm testPOST /auth/register- Register a new userPOST /auth/login- Login user
GET /users- Get all usersGET /users/:id- Get user by IDPUT /users/:id- Update userPUT /users/:id/password- Update passwordDELETE /users/:id- Delete user
GET /canvas- Get all canvasesGET /canvas/:id- Get canvas by IDPOST /canvas- Create new canvasPUT /canvas/:id- Update canvasDELETE /canvas/:id- Delete canvasPOST /canvas/share/:id- Share canvas with userGET /canvas/shared-users/:id- Get shared usersGET /canvas/owner/:ownerId- Get canvases by ownerGET /canvas/shared/:userId- Get shared canvases
Contributions are welcome! Please feel free to submit a Pull Request.
ISC
Built with ❤️ by the DrawHub team
Note: Real-time collaboration and commenting features are currently in development. Stay tuned for updates!