SketchFlow is a modern collaborative whiteboard web application that enables users to draw, interact, and share ideas in real time on an infinite canvas.
Designed with performance and scalability in mind, it combines a smooth drawing experience with a structured full-stack architecture.
⚠️ Note: Backend is hosted on a free tier, so the first request may take a few seconds due to cold start. ✅ No signup/login required — you can try the app instantly.
-
Freehand drawing for smooth sketching
-
Shape tools:
- Rectangle
- Circle
- Line
- Diamond
-
Infinite canvas with panning and zooming support
- Undo / Redo functionality
- Share and invite users (real-time capabilities via WebSockets)
- Optimized for desktop and tablet experiences
No authentication required — simply open the app and start drawing immediately.
- Next.js (TypeScript)
- Canvas API for rendering and interactions
-
Node.js (TypeScript)
-
WebSocket (ws) for real-time communication
-
HTTP server (REST APIs)
-
Authentication & security:
- JWT
- bcrypt
- CORS
- Turborepo for monorepo management
apps/
├── sketchflow-fe # Frontend (Next.js)
├── http-server # REST API server
└── ws-server # WebSocket server
git clone https://github.com/rafia-codes/SketchFlow.git
cd SketchFlownpm installcd apps/sketchflow-fe
npm run devRuns on: http://localhost:3000
cd apps/http-server
npm run devRuns on: http://localhost:3001
cd apps/ws-server
npm run devRuns on: ws://localhost:8080
- Advanced real-time collaboration (multi-user cursors, presence)
- Layers & object selection system
- New features
- Performance optimizations for large canvases
- Implemented infinite canvas with pan & zoom mechanics
- Designed a separate WebSocket server for scalable real-time communication
- Structured using monorepo architecture (Turborepo)
- Built with TypeScript across the stack for maintainability
Contributions are welcome!
- Fork the repository
- Create a feature branch
- Submit a pull request
This project is licensed under the MIT License.
Rafia GitHub: https://github.com/rafia-codes
If you find this project useful, consider giving it a ⭐ on GitHub!


