Note: Please file all issues in the main AstraDraw repository. This repository is for code contributions only.
Built on Excalidraw - An open source virtual hand-drawn style whiteboard.
Self-hosted Excalidraw frontend with user workspaces, video recordings, presentation mode, custom pens, and real-time collaboration.
- π¨ Infinite canvas with hand-drawn style
- π End-to-end encryption for collaboration
- π€ Real-time collaboration via WebSocket
- π± Responsive design for desktop and mobile
- π Dark mode support
- π€ User Authentication - Local accounts and OIDC/SSO support
- π Workspaces - Personal and shared workspaces with teams and collections
- π¬ Comments - Threaded canvas comments with @mentions and real-time sync
- π Notifications - In-app notifications for mentions and comments
- π¬ Talktrack - Record canvas walkthroughs with camera PIP
- π½οΈ Presentation Mode - Use frames as slides with implicit laser pointer
- ποΈ Custom Pens - Highlighter, fountain, marker presets
- π Stickers & GIFs - GIPHY integration
- π Pre-bundled Libraries - Team-wide shape collections
- π Quick Search - Cmd+K to search scenes across workspaces
docker run -d \
-p 80:80 \
-e VITE_APP_WS_SERVER_URL=wss://your-domain.com \
-e VITE_APP_BACKEND_V2_GET_URL=https://your-domain.com/api/v2/scenes/ \
-e VITE_APP_BACKEND_V2_POST_URL=https://your-domain.com/api/v2/scenes/ \
astradraw/app:latestRecommended: Use the main repo with just dev for full-stack development.
# From astradraw/ root (recommended)
just dev # Starts frontend + backend + room-service with hot-reload
# Or standalone frontend development
cd frontend
yarn install
yarn start # Dev server on http://localhost:5173Before committing:
# From astradraw/ root
just check-frontend
# Or directly
yarn test:typecheck && yarn test:other && yarn test:code| Variable | Description | Example |
|---|---|---|
VITE_APP_WS_SERVER_URL |
WebSocket server for collaboration | wss://draw.example.com |
VITE_APP_BACKEND_V2_GET_URL |
Scene GET endpoint | https://draw.example.com/api/v2/scenes/ |
VITE_APP_BACKEND_V2_POST_URL |
Scene POST endpoint | https://draw.example.com/api/v2/scenes/ |
VITE_APP_GIPHY_API_KEY |
GIPHY API key for stickers | your_giphy_api_key |
VITE_APP_DISABLE_TRACKING |
Disable analytics | true |
This is the frontend component of the AstraDraw suite:
| Repository | Purpose |
|---|---|
| astradraw | Main repo - deployment, docs, orchestration |
| astradraw-app (this repo) | Frontend application |
| astradraw-api | Backend API (auth, workspace, storage) |
| astradraw-room | WebSocket collaboration server |
Full documentation is in the main astradraw repository:
| Topic | Link |
|---|---|
| Getting Started | docs/getting-started/ |
| Architecture | docs/architecture/ |
| Features | docs/features/ |
| Deployment | docs/deployment/ |
frontend/
βββ excalidraw-app/ # AstraDraw application
β βββ components/ # React components
β β βββ Workspace/ # Scene management, dashboard, auth
β β βββ Comments/ # Threaded comments with markers
β β βββ Settings/ # User profile, preferences, Jotai atoms
β β βββ Talktrack/ # Video recording
β β βββ Presentation/ # Slideshow mode
β β βββ Stickers/ # GIPHY integration
β βββ hooks/ # React Query + custom hooks
β βββ pens/ # Custom pen presets
β βββ auth/ # Auth context and API client
β βββ collab/ # Real-time collaboration
β βββ data/ # Storage backends
βββ packages/
β βββ excalidraw/ # Core React component (AstraDraw fork)
β βββ common/ # Shared utilities
β βββ element/ # Element types
β βββ math/ # Math utilities
β βββ utils/ # General utilities
βββ public/ # Static assets
MIT License - Based on Excalidraw