summaryrefslogtreecommitdiffstats
path: root/dev-docs/docs/introduction/development.mdx
blob: 63c1875e5db40d56ce4ef286813b91a9f2e6f5fe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Development

## Code Sandbox

- Go to https://codesandbox.io/p/github/excalidraw/excalidraw
  - You may need to sign in with GitHub and reload the page
- You can start coding instantly, and even send PRs from there!

## Local Installation

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

### Requirements

- [Node.js](https://nodejs.org/en/)
- [Yarn](https://yarnpkg.com/getting-started/install) (v1 or v2.4.2+)
- [Git](https://git-scm.com/downloads)

### Clone the repo

```bash
git clone https://github.com/excalidraw/excalidraw.git
```

### Install the dependencies

```bash
yarn
```

### Start the server

```bash
yarn start
```

Now you can open [http://localhost:3000](http://localhost:3000) and start coding in your favorite code editor.

## Collaboration

For collaboration, you will need to set up [collab server](https://github.com/excalidraw/excalidraw-room) in local.

## Commands

### Install the dependencies

```bash
yarn
```

### Run the project

```bash
yarn start
```

### Reformat all files with Prettier

```bash
yarn fix
```

### Run tests

```bash
yarn test
```

### Update test snapshots

```bash
yarn test:update
```

### Test for formatting with Prettier

```bash
yarn test:code
```

### Docker Compose

You can use docker-compose to work on Excalidraw locally if you don't want to setup a Node.js env.

```bash
docker-compose up --build -d
```

## Self-hosting

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.

```bash
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.**

We are working towards providing a full-fledged solution for self-hosting your own Excalidraw.