Skip to content

xshubhamg/void-draw

Repository files navigation

Void Draw

Void Draw is a high-performance, real-time collaborative drawing application built with React, Convex, and Tailwind CSS.

Void Draw Interface

Overview

Void Draw provides a modern canvas experience for individual work and collaborative sessions. It includes a custom rendering engine, real-time synchronization, authentication support, and export tools.

Key Features

  • Real-time collaboration with instant synchronization across connected clients.
  • Advanced canvas tools for freehand drawing, geometric shapes, and styled elements.
  • Configurable grid system with adjustable size, visibility toggle, and snap-to-grid support.
  • Authentication with anonymous and OAuth sessions via Convex Auth.
  • PDF export using jspdf.
  • Persistent drawing preferences (for example, grid settings and styling options).

Technology Stack

Frontend

  • React 19 (Vite)
  • Tailwind CSS 4
  • Framer Motion
  • Phosphor Icons
  • Convex React Hooks

Backend

  • Convex
  • Convex Auth

Languages

  • TypeScript
  • CSS
  • HTML

Screenshots

Workspace Tools
Workspace Tools

Getting Started

Prerequisites

  • Bun (recommended) or Node.js
  • Convex account

Installation

  1. Clone the repository:
git clone https://github.com/your-username/void-draw.git
cd void-draw
  1. Install dependencies:
bun install
  1. Initialize Convex:
bun x convex dev

This command guides you through login and project setup, and generates .env.local.

  1. Start the development server:
bun dev

Application URL: http://localhost:5173

Environment Variables

Ensure .env.local includes:

CONVEX_DEPLOYMENT=your_deployment_name
VITE_CONVEX_URL=your_convex_url

For authentication settings, see convex/auth.config.ts.

Project Structure

├── convex/             # Backend schema, queries, and mutations
│   ├── auth.ts
│   ├── schema.ts
│   └── drawings.ts
├── src/
│   ├── canvas/         # Canvas engine and drawing components
│   │   ├── Canvas.tsx
│   │   └── Toolbar.tsx
│   ├── lib/            # Shared utilities
│   └── App.tsx
├── public/             # Static assets
└── tailwind.config.js

Deployment

Convex (Backend)

Configure your production deployment in the Convex Dashboard.

Vercel (Frontend)

  1. Push the repository to GitHub.
  2. Import the repository into Vercel.
  3. Set VITE_CONVEX_URL in Vercel environment variables.

License

Distributed under the MIT License. See LICENSE for details.

About

A reactive canvas application

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors