NovaDraw is a real-time collaborative whiteboard built with MERN + Yjs.
It allows teams to brainstorm, draw, and collaborate on an infinite canvas β just like in-person whiteboarding sessions.
Frontend
- React + Vite
- TailwindCSS
- shadcn/ui
Backend
- Node.js + Express
- MongoDB Atlas (Mongoose)
- Yjs + WebSockets (for real-time collaboration)
- Helmet + Morgan + CORS (security & logging)
/frontend β React + Vite app (UI) /backend β Express + MongoDB API + WebSocket server
markdown Copy code
- π― Free & open-source
- π¨ Infinite, canvas-based whiteboard
- βοΈ Hand-drawn style (smooth, sketch-like drawings)
- π Dark mode support
- ποΈ Customizable tools & board management
- π· Image upload & support
- π Shape libraries support (rectangles, circles, diamonds, arrows, etc.)
- πΌοΈ Export options β PNG, SVG, and clipboard
- πΎ Open format β export/import drawings as
.json - βοΈ Wide range of tools β free-draw, shapes, arrows, eraser, laser tool, highlighter, text tool
- β‘οΈ Arrow binding & labeled arrows
- π Undo / Redo history
- π Zooming & panning
- π Authentication (JWT) β secure login/register
- π Board Management β create, list, and manage whiteboards,library to save shapes,workspaces to save your canvas
- π File uploads (basic sharing support)
- π Real-time collaboration (multi-user sync with Yjs)
git clone https://github.com/yourusername/NovaDraw.git
cd NovaDraw
2. Backend setup
bash
Copy code
cd backend
npm install
Create a .env file in /backend:
env
Copy code
MONGO_URI=mongodb+srv://<username>:<password>@cluster0.xxxx.mongodb.net/?retryWrites=true&w=majority
PORT=5000
JWT_SECRET=your_jwt_secret
Run server:
bash
Copy code
npm run dev
β‘ Backend runs at β http://localhost:5000
3. Frontend setup
bash
Copy code
cd collab-frontend
npm install
Create a .env file in /collab-frontend (or copy from .env.example):
env
Copy code
VITE_API_URL=http://localhost:5000
Run frontend:
bash
Copy code
npm run dev
β‘ Frontend runs at β http://localhost:5173
β
To-Do (Future Enhancements)
.. More whiteboard tools (sticky notes, templates, grids)
.. Role-based access control (RBAC)
.. Persistent file storage (S3 / Cloudinary)
.. User profiles & avatars
.. Whiteboard history & replay mode
.. Laser tool integration is still remain
.. Highlighter tool for better marking
π€ Contributing
1. Fork the repo
2. Create your feature branch β git checkout -b feature/my-feature
3. Commit changes β git commit -m "Add my feature"
4. Push to your fork β git push origin feature/my-feature
5. Open a Pull Request π
π¨βπ» Author
Built by Hell1213