Note
This is a fork of macintushar/draw
Draw is a wrapper around Excalidraw, integrated with Supabase to save and sync your drawings seamlessly across different devices. It allows you to use Excalidraw anywhere while keeping your data available everywhere.
* Excalidraw: Leverages the functionality of Excalidraw, a popular web-based drawing tool.
* Cloud Sync: Uses Supabase for authentication and storage, ensuring secure access and synchronization of your drawings.
+ Folders: Organize drawings into folders.
+ Sidebar: Navigate and manage folders and drawings from a sleek sidebar.
+ Drawing Limit: Optional environment variable to limit the number of drawings per user.
- Clunky UI: Removed clunky, unnecessary ui components from the UI.- Sign Up or Log In: Use the authentication flow provided by Supabase to sign up or log in.
- Create and Edit Drawings: Use the Excalidraw interface to create or edit drawings.
- Save Drawings: Drawings are automatically saved to your Supabase database.
- Access Anywhere: Log in from any device to access and sync your drawings.
To deploy the app, you can use platforms like Vercel or Netlify. We have set up a one-click deploy to Vercel.
You can optionally limit the number of drawings a user can create by setting the VITE_MAX_DRAWINGS_PER_USER environment variable in your Vercel deployment (or any other hosting platform).
For example, to limit users to 10 drawings:
- In Vercel: Go to your project settings → Environment Variables → Add
VITE_MAX_DRAWINGS_PER_USERwith value10 - In
.envfile: AddVITE_MAX_DRAWINGS_PER_USER=10
If this environment variable is not set, users can create unlimited drawings (default behavior).
You can also specify a list of user emails that bypass the drawing limit by setting the VITE_UNLIMITED_USERS environment variable. This is useful for administrators or premium users who should have unlimited access.
For example:
- In Vercel: Add
VITE_UNLIMITED_USERSwith valueadmin@example.com,manager@example.com,premium@example.com - In
.envfile: AddVITE_UNLIMITED_USERS=admin@example.com,manager@example.com
Users in this list can create unlimited drawings even when VITE_MAX_DRAWINGS_PER_USER is set. The comparison is case-insensitive and supports multiple emails separated by commas.
If you want to deploy using Docker, you can use the provided docker-compose file, using the instruction in the Docker section.
If you'd like to build the app yourself, run:
bun run build
Deploy to other hosting providers by following their specific deployment instructions.
- Vite (React)
- Tailwind CSS with shadcn/ui
- Tanstack Query and Router
- Excalidraw
- Supabase
- Sentry
- Day.js
- cmdk
- Zod
- Bun
and many others.
Contributions are welcome! For major changes, please open an issue to discuss what you would like to change. Otherwise:
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a pull request
This is a visual of the Database Schema on Supabase. Read docs/supabase.md for more detailed information on how to set up Supabase to work with Draw.

Clone the repository:
git clone https://github.com/macintushar/draw.git
cd draw
Install dependencies:
bun install
Set up your environment variables:
Create a .env file in the root directory and add your Supabase and Sentry credentials:
cp .env.example .env
Run the development server:
bun run dev
Your app will be available at http://localhost:5173.
- Excalidraw for providing the best open-source drawing tool. This wouldn't be possible without them (literally).
- macintushar/draw for the original project this was forked from.
This project is licensed under the MIT License. See the LICENSE file for more details.
If you have any questions or suggestions, feel free to email me at (k@kainoa.me)[mailto:k@kainoa.me]
