image

Chitarkar – Real-Time Collaborative Drawing Tool

Overview

Chitarkar is a modern, browser-based drawing and sketching platform inspired by Excalidraw. It enables users to create clean, hand-drawn-style diagrams and illustrations in a minimal, intuitive interface. With real-time collaborative features powered by WebSockets, multiple users can draw on the same canvas simultaneously.


šŸ›  Technologies Used

  • Frontend: React, Next.js, TailwindCSS, Framer Motion
  • Backend: WebSocket (Socket.io), PostgreSQL, Prisma
  • Canvas Logic: HTML5 Canvas API
  • Dev Tools: VSCode, Figma, Chrome DevTools, Socket.io Dev Tools

šŸš€ Live Demo

šŸ”— Live Project
šŸ’» GitHub Repo


✨ Key Features

  • āœļø Freehand drawing and shape tools including lines, rectangles, circles
  • šŸ‘„ Multi-user real-time collaboration with conflict resolution
  • šŸŽØ Custom color palette, stroke width, and font options
  • šŸ“ Text and annotation support within the canvas
  • šŸ’¾ Export canvas as PNG or SVG
  • ā†©ļø Undo / Redo support
  • šŸŒ™ Dark mode UI toggle

šŸ–¼ļø Visuals







🧩 Project Architecture

šŸ–„ Frontend

  • Built in Next.js for routing and page handling
  • Custom drawing logic using Canvas API
  • Dynamic styling and responsive layout via TailwindCSS
  • UI interactions animated with Framer Motion

šŸ”Œ Backend

  • Real-time syncing handled by Socket.io
  • User session, room, and state management stored in PostgreSQL via Prisma
  • Conflict management and drawing state sync using WebSocket channels

ā³ Project Duration

šŸ“… Jan 2024 – Mar 2024
šŸ‘Øā€šŸ’» Role: Frontend Developer


āš”ļø Challenges Tackled

  • šŸ–Šļø Implementing smooth and responsive drawing with support for multiple tools
  • šŸ” Synchronizing canvas state across multiple users in real-time
  • 🧠 Handling undo/redo operations and history stacks per user
  • šŸ” Managing resolution scaling and zooming for varying devices
  • 🧩 Optimizing performance for dense and large-scale drawings

šŸ“‚ Folder Structure (Simplified)

chitarkar/
ā”œā”€ā”€ components/       # UI and tool components (Toolbox, Canvas, Export)
ā”œā”€ā”€ pages/            # Next.js page routing
ā”œā”€ā”€ public/           # Static assets
ā”œā”€ā”€ hooks/            # Custom hooks for drawing and WebSocket
ā”œā”€ā”€ prisma/           # Schema and DB logic
ā”œā”€ā”€ styles/           # Tailwind and global styles
└── utils/            # Drawing and canvas logic utilities

Built with love by Sameer Rao