Skip to content

repath-project/repath-studio

Repath Studio
🚧 This project is in alpha stage!

GitHub Downloads (all assets, latest release)

Build desktop app Deploy demo website Outdated dependencies Static security testing

Studio Screenshot

Repath Studio is a cross platform vector graphics editor, that combines procedural tooling with traditional design workflows. It includes an interactive shell, which allows evaluating code to generate shapes, or even extend the editor on the fly. Supporting multiple programming languages and enriching the existing API is planned. The tool relies heavily on the SVG specification, and aims to educate users about it. Creating and editing SMIL animations - an SVG extension – is an important aspect of the project, that is yet to be fully implemented. An advanced undo/redo mechanism is used to maintain a full history tree of actions in memory, so users will never lose their redo stack.

Supported by

Logo NLnet: abstract logo of four people seen from above    Logo NGI Zero: letterlogo shaped like a tag

Rationale

Why is this implemented as a web application?

  • 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.
  • Avoid re-implementing complex specifications, like SMIL.
  • Access to JavaScript ecosystem.
  • Being able to serve this as website is a huge plus.

Why is the desktop app wrapped with ElectronJS?

  • Electron is a mature framework with a rich API.
  • Embedded Chromium ensures that web APIs will work consistently across multiple operating systems.
  • Using the same rendering engine promotes UI consistency.
  • We can use the same language to develop our backend and frontend.

Why ClojureScript?

  • Built-in immutability.
  • Easy data manipulation.
  • Stability of libraries.
  • Interoperability with js and react.
  • Clean syntax.

What about performance?

We are currently trying to optimize for hundreds of elements per document. We are also testing a canvas based implementation that can handle thousands of nodes on a single document, but that's not within the current scope of the project.

How to build it locally

System Requirements

Shell instructions

Clone the project.

git clone https://github.com/repath-project/repath-studio.git

Go into the directory.

cd repath-studio

Install the dependencies, build the app and watch the project files.

npm install && npm run dev

Run electron on a different terminal.

npm run electron