2020-01-04 16:25:10 +01:00
< div align = "center" style = "display:flex;flex-direction:column;" >
2020-01-25 15:30:01 +01:00
< a href = "https://excalidraw.com" >
2021-01-14 17:31:52 +01:00
< img width = "540" src = "./public/og-image-sm.png" alt = "Excalidraw logo: Sketch handrawn like diagrams." / >
2020-01-25 15:30:01 +01:00
< / a >
2021-02-08 17:39:59 +01:00
< h3 > Virtual whiteboard for sketching hand-drawn like diagrams.< br > Collaborative and end-to-end encrypted.< / h3 >
2020-03-06 15:20:02 +01:00
< p >
< a href = "https://twitter.com/Excalidraw" >
< img alt = "Follow Excalidraw on Twitter" src = "https://img.shields.io/twitter/follow/excalidraw.svg?label=follow+excalidraw&style=social&logo=twitter" >
< / a >
2020-08-21 01:36:18 +02:00
< a target = "_blank" href = "https://crowdin.com/project/excalidraw" >
2020-03-06 15:20:02 +01:00
< img src = "https://badges.crowdin.net/excalidraw/localized.svg" >
< / a >
< / p >
2021-02-06 17:12:35 +01:00
< p > Ask questions or hang out on our < a target = "_blank" href = "https://discord.gg/UexuTaE" > discord.gg/UexuTaE< / a > .< / p >
2020-01-04 16:25:10 +01:00
< / div >
2020-01-04 00:29:13 +01:00
## Try it now
2020-12-08 19:13:43 +01:00
Go to [excalidraw.com ](https://excalidraw.com ) to start sketching.
2020-01-04 00:29:13 +01:00
2021-01-14 17:31:52 +01:00
Read the latest news and updates on our [blog ](https://blog.excalidraw.com ). A good start is to see all the updates of [One Year of Excalidraw ](https://blog.excalidraw.com/one-year-of-excalidraw/ ).
2021-02-10 09:22:49 +01:00
## Supporting Excalidraw
2021-02-06 17:12:35 +01:00
If you like the project, you can become a sponsor at [Open Collective ](https://opencollective.com/excalidraw ).
2021-02-10 09:22:49 +01:00
[<img src="https://opencollective.com/excalidraw/tiers/sponsors/0/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/0/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/1/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/1/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/2/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/2/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/3/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/3/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/4/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/4/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/5/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/5/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/6/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/6/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/7/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/7/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/8/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/8/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/9/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/9/website ) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/10/avatar.svg?avatarHeight=120"> ](https://opencollective.com/excalidraw/tiers/sponsors/10/website )
2021-02-06 17:12:35 +01:00
< a href = "https://opencollective.com/excalidraw#category-CONTRIBUTE" target = "_blank" > < img src = "https://opencollective.com/excalidraw/tiers/backers.svg?avatarHeight=32" / > < / a >
2021-01-14 17:31:52 +01:00
## Documentation
### Shortcuts
You can almost do anything with shortcuts. Click on the help icon on the bottom right corner to see them all.
### Curved lines and arrows
Choose line or arrow and click click click instead of drag.
### Charts
You can easily create charts by copy pasting data from Excel or just plain comma separated text.
### Translating
To translate Excalidraw into other languages, please visit [our Crowdin page ](https://crowdin.com/project/excalidraw ). To add a new language, [open an issue ](https://github.com/excalidraw/excalidraw/issues/new ) so we can get things set up on our end first.
Translations will be available on the app if they exceed a certain threshold of completion (currently 85%).
### Create a collaboration session manually
2021-02-08 17:39:59 +01:00
In order to create a session manually, you just need to generate a link of this form:
2021-01-14 17:31:52 +01:00
```
https://excalidraw.com/#room=[0-9a-f]{20},[a-zA-Z0-9_-]{22}
```
#### Example
```
https://excalidraw.com/#room=91bd46ae3aa84dff9d20,pfLqgEoY1c2ioq8LmGwsFA
```
The first set of digits is the room. This is visible from the server that’ s going to dispatch messages to everyone that knows this number.
The second set of digits is the encryption key. The Excalidraw server doesn’ t know about it. This is what all the participants use to encrypt/decrypt the messages.
2020-04-05 15:24:23 +02:00
2020-12-08 19:13:43 +01:00
## Shape libraries
Find a growing list of libraries containing assets for your drawings at [libraries.excalidraw.com ](https://libraries.excalidraw.com ).
2021-02-10 17:28:29 +01:00
## Embedding Excalidraw in your App?
Try out [`@excalidraw/excalidraw` ](https://www.npmjs.com/package/@excalidraw/excalidraw ). This package allows you to easily embed Excalidraw as a React component into your apps.
2021-02-08 17:39:59 +01:00
## Development
2020-01-04 00:29:13 +01:00
2020-01-04 03:19:58 +01:00
### Code Sandbox
2020-01-04 00:29:13 +01:00
2020-01-04 03:19:58 +01:00
- Go to https://codesandbox.io/s/github/excalidraw/excalidraw
2021-02-08 17:39:59 +01:00
- You may need to sign in with GitHub and reload the page
2020-01-04 03:19:58 +01:00
- You can start coding instantly, and even send PRs from there!
2020-01-04 00:29:13 +01:00
2020-01-04 03:19:58 +01:00
### Local Installation
2020-01-04 00:29:13 +01:00
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
2020-01-16 22:50:02 +01:00
#### Clone the repo
2020-01-04 00:29:13 +01:00
```bash
2020-01-04 03:19:58 +01:00
git clone https://github.com/excalidraw/excalidraw.git
2020-01-04 00:29:13 +01:00
```
2020-01-16 22:50:02 +01:00
#### Commands
2020-01-04 00:29:13 +01:00
2020-04-07 15:09:01 +02:00
| Command | Description |
| --------------------- | --------------------------------- |
| `npm install` | Install the dependencies |
| `npm start` | Run the project |
| `npm run fix` | Reformat all files with Prettier |
| `npm test` | Run tests |
| `npm run test:update` | Update test snapshots |
| `npm run test:code` | Test for formatting with Prettier |
2020-01-04 00:29:13 +01:00
2020-04-29 07:53:07 +02:00
#### Docker Compose
2021-02-08 17:39:59 +01:00
You can use docker-compose to work on Excalidraw locally if you don't want to setup a Node.js env.
2020-06-18 11:46:24 +02:00
2020-04-29 07:53:07 +02:00
```sh
docker-compose up --build -d
```
2021-02-08 17:39:59 +01:00
### Self-hosting
2020-06-18 11:46:24 +02:00
2021-02-08 17:39:59 +01:00
We publish a Docker image with the Excalidraw client at [excalidraw/excalidraw ](https://hub.docker.com/r/excalidraw/excalidraw ). You can use it to self-host your own client under your own domain, on Kubernetes, AWS ECS, etc.
2020-06-18 11:46:24 +02:00
```sh
docker build -t excalidraw/excalidraw .
docker run --rm -dit --name excalidraw -p 5000:80 excalidraw/excalidraw:latest
```
The Docker image is free of analytics and other tracking libraries.
**At the moment, self-hosting your own instance doesn't support sharing or collaboration features.**
2021-02-08 17:39:59 +01:00
We are working towards providing a full-fledged solution for self-hosting your own Excalidraw.
2020-06-18 11:46:24 +02:00
2020-01-04 00:29:13 +01:00
## Contributing
2020-03-06 15:20:02 +01:00
Pull requests are welcome. For major changes, please [open an issue ](https://github.com/excalidraw/excalidraw/issues/new ) first to discuss what you would like to change.
2021-01-14 17:31:52 +01:00
## Notable used tools
2020-06-30 20:28:19 +02:00
2021-01-14 17:31:52 +01:00
- [Create React App ](https://github.com/facebook/create-react-app )
2020-01-18 02:48:56 +01:00
- [Rough.js ](https://roughjs.com )
2020-05-22 21:58:44 +02:00
- [TypeScript ](https://www.typescriptlang.org )
2020-05-02 16:01:41 +02:00
- [Vercel ](https://vercel.com )
2020-01-04 03:19:58 +01:00
2020-01-05 18:54:54 +01:00
And the main source of inspiration for starting the project is the awesome [Zwibbler ](https://zwibbler.com/demo/ ) app.