|
15 | 15 |
|
16 | 16 | 
|
17 | 17 |
|
| 18 | +<!-- sponsors --><!-- sponsors --> |
| 19 | + |
18 | 20 | ## Main goals
|
19 | 21 |
|
20 | 22 | - Create a cross platform / open source vector graphics editor.
|
|
24 | 26 | - Advanced undo/redo - maintain a history tree of all actions and never lose your redo stack.
|
25 | 27 | - Implement built-in accessibility testing features.
|
26 | 28 |
|
27 |
| -<!-- sponsors --><!-- sponsors --> |
| 29 | +## Rationale |
| 30 | + |
| 31 | +### Why is this implemented as a web application? |
| 32 | + |
| 33 | +- Using the main targeting platform to also create your SVGs, ensures that what you see while editing, is as close as possible to what you are going to get when you load your exported creations. |
| 34 | +- Avoid re-implementing complex specifications, like SMIL. |
| 35 | +- Access to JavaScript ecosystem. |
| 36 | +- Being able to serve this as website is a huge plus. |
| 37 | + |
| 38 | +### Why is the desktop app wrapped with ElectronJS? |
| 39 | + |
| 40 | +- Electron is a mature framework with a rich API. |
| 41 | +- Embedded Chromium ensures that web APIs will work consistently across multiple operating systems. |
| 42 | +- Using the same rendering engine promotes UI consistency. |
| 43 | +- We can use the same language to develop our backend and frontend. |
| 44 | + |
| 45 | +### Why ClojureScript? |
| 46 | + |
| 47 | +- Built-in immutability. |
| 48 | +- Easy data manipulation. |
| 49 | +- Stability of libraries. |
| 50 | +- Interoperability with js and react. |
| 51 | +- Clean syntax. |
| 52 | + |
| 53 | +### What about performance? |
| 54 | + |
| 55 | +We are currently trying to optimize for hundreds of elements per document. Editing thousands of nodes on a single document is not within the scope of this project (at least for now). |
28 | 56 |
|
29 | 57 | ## How to build it locally
|
30 | 58 |
|
|
0 commit comments