Skip to content

markande98/sketchidraw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Banner

An open source virtual hand-drawn style whiteboard.
Collaborative and end-to-end encrypted.

Screenshot

Skechidraw Home


🎯 About

SketchIDraw is a powerful, free collaborative whiteboard that brings the charm of hand-drawn sketches to digital collaboration. Built with modern web technologies, it offers real-time collaboration with end-to-end encryption, making it perfect for brainstorming, design thinking, and visual communication.

✨ Why SketchIDraw?

  • 🎨 Hand-drawn aesthetics - Beautiful, organic-looking shapes and lines
  • πŸ”’ Secure collaboration - End-to-end encrypted real-time collaboration
  • ⚑ Lightning fast - Optimized canvas engine with smooth performance
  • 🌐 Free forever - Open source and completely free to use
  • 🎯 Feature-rich - Everything you need for visual collaboration

πŸš€ Features

🎨 Drawing & Shapes πŸ”§ Tools & Controls 🌟 Collaboration
Rectangle ▫️ Instant property updates ⚑ Real-time cursor tracking πŸ–±οΈ
Ellipse β­• Shape resizing & dragging πŸ”„ End-to-end encryption πŸ”’
Diamond πŸ”· Text editing ✏️ Secure authentication πŸ”‘
Lines & Arrows βž–βž‘οΈ Pencil tool πŸ–ŠοΈ Multi-user support πŸ‘₯

🎨 Drawing Tools

  • Shape Rendering: Create perfect rectangles, ellipses, diamonds, lines, and arrows
  • Pencil Tool: Free-hand drawing with smooth curves
  • Text Tool: Add, edit, resize, and move text elements
  • Smart Controls: Instant property updates for all elements

⚑ Canvas Experience

  • Infinite Canvas: Pan seamlessly across unlimited workspace
  • Zoom Support: Programmatic and pinch gesture zooming
  • Smooth Performance: Butter-smooth interactions with optimized rendering
  • Shape Manipulation: Easy resizing, dragging, and deleting

🌟 User Experience

  • Light/Dark Mode: Beautiful themes powered by next-themes
  • Local Storage Sync: Never lose your work
  • Type-safe: Built with TypeScript for reliability
  • Responsive Design: Works perfectly on all devices

πŸ”’ Security & Collaboration

  • End-to-end Encryption: Your data stays private
  • Real-time Collaboration: See changes instantly
  • Secure Authentication: Powered by NextAuth.js
  • Postgres Database: Reliable data persistence

πŸ› οΈ Tech Stack

Next.js TypeScript React Zustand PostgreSQL Tailwind CSS

Frontend:

  • βš›οΈ Next.js - React framework with SSR
  • 🎯 TypeScript - Type-safe development
  • 🎨 Tailwind CSS - Utility-first styling
  • 🌍 Zustand - Global state management
  • πŸŒ— next-themes - Theme management

Backend:

  • πŸ”‘ NextAuth.js - Authentication
  • πŸ—„οΈ PostgreSQL - Database
  • πŸ”’ End-to-end encryption - Secure collaboration

Canvas Engine:

  • πŸ§‘β€πŸ’» Custom OOP Architecture - Modular and maintainable
  • ⚑ Optimized Rendering - Smooth 60fps performance
  • πŸ“± Touch Support - Mobile-friendly interactions

πŸš€ Getting Started

Prerequisites

Make sure you have the following installed:

  • Docker and Docker Compose
  • Git

πŸ“¦ Quick Start with Docker

  1. Clone the repository
  git clone https://github.com/markande98/sketchidraw.git
  cd sketchidraw
  1. Set up environment variables for the main app
  cd apps/sketchidraw
  cp .env.example .env
  cd ../..
  1. Set up environment variables for the WebSocket server
  cd apps/ws
  cp .env.example .env
  cd ../..
  1. Start the application
docker compose up -d
  1. Open your browser Navigate to http://localhost:3000 and start sketching! 🎨

Note: Make sure to update the .env files in both apps/sketchidraw and apps/ws directories with your specific configuration before running the application.


🀝 Contributing

We love contributions! Here's how you can help make SketchIDraw even better:

πŸ› Found a Bug?

  1. Check if it's already reported in Issues
  2. Create a new issue with detailed steps to reproduce
  3. Include screenshots or videos if helpful

πŸ’‘ Have an Idea?

  1. Open an issue to discuss your idea
  2. Fork the repository
  3. Create a feature branch: git checkout -b feature/amazing-feature
  4. Make your changes
  5. Commit: git commit -m 'Add amazing feature'
  6. Push: git push origin feature/amazing-feature
  7. Open a Pull Request

πŸ“ Development Guidelines

  • Follow TypeScript best practices
  • Write clean, self-documenting code
  • Add tests for new features
  • Update documentation as needed
  • Ensure all tests pass before submitting

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Inspired by Excalidraw for the hand-drawn aesthetic
  • Built with amazing open-source technologies
  • Thanks to all contributors and users! πŸ’™