Back to Work

Excalidraw Clone

A collaborative whiteboard tool I built to understand how real-time collaboration works. Drawing on canvas and syncing across users was way harder than I expected!

Web2
Frontend
Open Source
TypeScript
React
Canvas API
WebSockets
Rough.js
Excalidraw Clone - A collaborative whiteboard tool I built to understand how real-time collaboration works. Drawing on

Project Overview

I've always been fascinated by tools like Excalidraw and wanted to understand how they work under the hood. So I decided to build my own version. The drawing part was fun - using Canvas API and Rough.js to get that hand-drawn look. But real-time collaboration? That was a whole different beast. Getting multiple users to draw simultaneously without conflicts was the biggest challenge. I spent way too long debugging why some strokes would disappear or appear in the wrong place. Eventually figured out a decent conflict resolution strategy, though I'm sure there are still edge cases I haven't caught. This project taught me a lot about WebSockets, canvas manipulation, and the complexity of real-time systems. The code might have a few rough edges (pun intended), but it works and I learned a ton building it.

Project Gallery

Excalidraw Clone - Screenshot 1
Excalidraw Clone - Screenshot 2
Excalidraw Clone - Screenshot 3

💡 Like all human-written code, you might spot a typo or two - that's part of the authentic development process!

Key Highlights

Real-time multi-user collaboration
Hand-drawn aesthetic with Rough.js
Multiple drawing tools
WebSocket-based synchronization

Project Details

Timeline

4 weeks

Team

Solo project

Role

Frontend Developer

Completed

2024

Type

personal experiment