Collaborative drawing made simple and seamless
PaperlessDraw is a real-time collaborative drawing application that brings creativity to life in the digital realm. Whether you're brainstorming with colleagues, teaching students, or simply having fun with friends, PaperlessDraw provides an intuitive canvas where multiple users can draw, sketch, and create together seamlessly.
- 🎯 Real-time Collaboration - Draw simultaneously with multiple users
- 🌐 Web-based - No downloads required, works in any modern browser
- ⚡ WebSocket Integration - Lightning-fast synchronization across all connected users
- 🎨 Rich Drawing Tools - Complete set of brushes, colors, and drawing utilities
- 📱 Responsive Design - Works perfectly on desktop, tablet, and mobile devices
- 🔐 Secure Authentication - User management and session handling
- 🏗️ Modern Architecture - Built with Next.js and TypeScript for reliability
Our application follows a clean, scalable architecture designed for real-time collaboration:
The system consists of:
- Database (db) - Persistent storage for user data, drawings, and sessions
- HTTP Backend - RESTful API handling authentication, user management, and data operations
- WebSocket Server - Real-time communication hub for live drawing synchronization
- Landing Page - User onboarding and authentication interface
- Drawing Canvas - Multi-user collaborative drawing environment with comprehensive tools
- Room Management - Create and join drawing sessions with multiple participants
All components communicate seamlessly to provide a smooth, responsive collaborative experience.
- Next.js - React-based framework for optimal performance
- TypeScript - Type-safe development for better code quality
- Canvas API - High-performance drawing capabilities
- Responsive Design - Mobile-first approach
- WebSocket - Real-time bidirectional communication
- RESTful API - Standard HTTP endpoints for data operations
- Database Integration - Persistent storage solution
- Authentication System - Secure user management
- Turborepo - Monorepo management for scalable development
- ESLint - Code quality and consistency
- Prettier - Automated code formatting
- TypeScript - Static type checking across the entire codebase
- Node.js 16.0 or higher
- pnpm (recommended) or npm
-
Clone the repository
git clone https://github.com/epiitom/PaperlessDraw.git cd PaperlessDraw -
Install dependencies
pnpm install
-
Start development servers
pnpm dev
-
Open your browser
- Frontend:
http://localhost:3000 - API Documentation:
http://localhost:3001
- Frontend:
# Build all applications
pnpm build
# Start production server
pnpm start-
Create or Join a Room
- Visit the landing page
- Create a new drawing session or join an existing one
- Share the room code with collaborators
-
Start Drawing
- Select your preferred drawing tools
- Start creating on the shared canvas
- See real-time updates from other participants
-
Collaborate
- Multiple users can draw simultaneously
- Changes are synchronized instantly across all devices
- Chat with other participants (if implemented)
PaperlessDraw/
├── apps/
│ ├── web/ # Main frontend application
│ └── docs/ # Documentation site
├── packages/
│ ├── ui/ # Shared UI components
│ ├── eslint-config/ # ESLint configurations
│ └── typescript-config/ # TypeScript configurations
├── server/ # Backend services
│ ├── api/ # HTTP API endpoints
│ ├── websocket/ # WebSocket server
│ └── database/ # Database models and migrations
└── README.md
We welcome contributions to PaperlessDraw! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Add tests (if applicable)
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow TypeScript best practices
- Maintain code formatting with Prettier
- Ensure ESLint passes without warnings
- Add tests for new functionality
- Update documentation as needed
Found a bug or have an idea for improvement? We'd love to hear from you!
- Bug Reports: Create an issue
- Feature Requests: Request a feature
- Advanced drawing tools (layers, effects)
- Voice chat integration
- Drawing templates and backgrounds
- Export functionality (PNG, SVG, PDF)
- User profiles and drawing galleries
- Mobile app development
- Whiteboard mode for presentations
- Integration with popular design tools
This project is licensed under the MIT License - see the LICENSE file for details.
Star ⭐ this repository if you find it helpful!