Virtual whiteboard for sketching hand-drawn like diagrams

#whiteboard #app #selfhosted #docker #excel #mindmap #braindump #data #storage

website: https://excalidraw.com

YuBin, Hsu 81046ccd6b fix: keep customData when converting to ExcalidrawElement (#7656) hai 1 ano
.codesandbox 50450a7dab chore: update required node version to 18 (#6837) %!s(int64=2) %!d(string=hai) anos
.github 5302490372 feat: update logo (#6979) hai 1 ano
.husky d0b33d35db build: temporarily disable pre-commit (#6132) %!s(int64=2) %!d(string=hai) anos
dev-docs 207a0bcc6e fix: umd build so it can be used in browser (#7349) hai 1 ano
excalidraw-app cee00767df feat: support excalidrawAPI and remove refs support (#7251) hai 1 ano
firebase-project 7431ca81d1 fix: update `storage.rules` (#5020) %!s(int64=3) %!d(string=hai) anos
public 6a821f3b76 fix: Icon size in manifest (#7073) hai 1 ano
scripts 70888327a3 fix: use subdirectory for @excalidraw/excalidraw size limit (#6787) %!s(int64=2) %!d(string=hai) anos
src 81046ccd6b fix: keep customData when converting to ExcalidrawElement (#7656) hai 1 ano
.dockerignore e1c5c706c6 build: stops ignoring .env files from docker context so env variables get set during react app build. (#5809) %!s(int64=2) %!d(string=hai) anos
.editorconfig 8dccc793ee add editorconfig (#1198) %!s(int64=5) %!d(string=hai) anos
.env.development 6abf194281 fix: export to plus url (#6980) hai 1 ano
.env.production 6abf194281 fix: export to plus url (#6980) hai 1 ano
.eslintignore 163ad1f4c4 feat: image support (#4011) %!s(int64=3) %!d(string=hai) anos
.eslintrc.json 8d4f455cd3 chore: Update Typescript to 4.4.4 (#4188) %!s(int64=3) %!d(string=hai) anos
.gitattributes c814917927 Add gitattributes (#2164) %!s(int64=4) %!d(string=hai) anos
.gitignore 48924688c7 build: migrate to Vite 🚀 (#6818) %!s(int64=2) %!d(string=hai) anos
.lintstagedrc.js 5d295415db Keep errors, elements and comments consistent (#2340) %!s(int64=4) %!d(string=hai) anos
.npmrc 5b7596582f feat: color picker redesign (#6216) %!s(int64=2) %!d(string=hai) anos
.nvmrc 50450a7dab chore: update required node version to 18 (#6837) %!s(int64=2) %!d(string=hai) anos
.prettierignore 89cf826555 Change target branch of coverage and pretty print (#1850) %!s(int64=5) %!d(string=hai) anos
.watchmanconfig 24fa657093 Don't reset cache while zooming using a gesture (#1103) %!s(int64=5) %!d(string=hai) anos
CONTRIBUTING.md f23cdc47ee docs: migrating dev docs to docusaurus :) (#6073) %!s(int64=2) %!d(string=hai) anos
Dockerfile 5dd1efde8a build: update to node 18 in docker (#6822) %!s(int64=2) %!d(string=hai) anos
LICENSE 6f33d72e35 Add MIT License (#176) %!s(int64=5) %!d(string=hai) anos
README.md 81c0259041 docs: add npm downloads rate badge to README.md file (#7127) hai 1 ano
crowdin.yml 99cd65de4a Locale %!s(int64=5) %!d(string=hai) anos
docker-compose.yml baf9da2b83 chore: Update action versions and docker build (#3065) %!s(int64=4) %!d(string=hai) anos
index.html 5302490372 feat: update logo (#6979) hai 1 ano
package.json 54153629c0 chore: update release scripts (#7282) hai 1 ano
tsconfig-types.json 48924688c7 build: migrate to Vite 🚀 (#6818) %!s(int64=2) %!d(string=hai) anos
tsconfig.json 741d5f1a18 refactor: move excalidraw-app outside src (#6987) hai 1 ano
vercel.json 9135ebf2e2 feat: redirect vscode.excalidraw.com to vscode marketplace (#5285) %!s(int64=3) %!d(string=hai) anos
vite.config.ts 6a821f3b76 fix: Icon size in manifest (#7073) hai 1 ano
vitest.config.ts e8def8da8d feat: Support mermaid flowchart and sequence diagrams to excalidraw diagrams 🥳 (#6920) hai 1 ano
yarn.lock 7b00089314 chore: bump @excalidraw/random-username (#7272) hai 1 ano

README.md


<img alt="Excalidraw is released under the MIT license." src="https://img.shields.io/badge/license-MIT-blue.svg"  />

<img alt="npm downloads/month" src="https://img.shields.io/npm/dm/@excalidraw/excalidraw"  />

<img alt="PRs welcome!" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat"  />

<img alt="Chat on Discord" src="https://img.shields.io/discord/723672430744174682?color=738ad6&label=Chat%20on%20Discord&logo=discord&logoColor=ffffff&widge=false"/>

<img alt="Follow Excalidraw on Twitter" src="https://img.shields.io/twitter/follow/excalidraw.svg?label=follow+@excalidraw&style=social&logo=twitter"/>

Product showcase

Create beautiful hand-drawn like diagrams, wireframes, or whatever you like.

Features

The Excalidraw editor (npm package) supports:

  • 💯 Free & open-source.
  • 🎨 Infinite, canvas-based whiteboard.
  • ✍️ Hand-drawn like style.
  • 🌓 Dark mode.
  • 🏗️ Customizable.
  • 📷 Image support.
  • 😀 Shape libraries support.
  • 👅 Localization (i18n) support.
  • 🖼️ Export to PNG, SVG & clipboard.
  • 💾 Open format - export drawings as an .excalidraw json file.
  • ⚒️ Wide range of tools - rectangle, circle, diamond, arrow, line, free-draw, eraser...
  • ➡️ Arrow-binding & labeled arrows.
  • 🔙 Undo / Redo.
  • 🔍 Zoom and panning support.

Excalidraw.com

The app hosted at excalidraw.com is a minimal showcase of what you can build with Excalidraw. Its source code is part of this repository as well, and the app features:

  • 📡 PWA support (works offline).
  • 🤼 Real-time collaboration.
  • 🔒 End-to-end encryption.
  • 💾 Local-first support (autosaves to the browser).
  • 🔗 Shareable links (export to a readonly link you can share with others).

We'll be adding these features as drop-in plugins for the npm package in the future.

Quick start

Install the Excalidraw npm package:

npm install react react-dom @excalidraw/excalidraw

or via yarn

yarn add react react-dom @excalidraw/excalidraw

Don't forget to check out our Documentation!

Contributing

Integrations

Who's integrating Excalidraw

Google CloudMetaCodeSandboxObsidian ExcalidrawReplitSliteNotionHackerRank • and many others

Sponsors & support

If you like the project, you can become a sponsor at Open Collective or use Excalidraw+.

Thank you for supporting Excalidraw

Last but not least, we're thankful to these companies for offering their services for free:

Vercel Sentry Crowdin