Graphite is a new open source, Rust-based 2D design app combining traditional graphics editors with node-based, non-destructive procedural design workflows to bring actual innovation back to the world of graphic design. Our mission is to recreate Blender's success as the de facto tool in its creative discipline.
As the project founder, I'd be happy to answer questions here— ask away!
The UI looks gorgeous, and so does the artwork! Incredible that this is all browser-based. What are you using for the frontend, and what drove you to choose that?
Thank you! The UI is all my design— and it's something I care deeply about making clean and approachable, so it's gone through thousands of hours of meticulous work.
We're using Svelte for component composition and reactive data binding, but all the actual HTML and CSS is written from scratch to match the UI design mockup and be as lightweight and bloat-free as it's possible to be. Since Svelte does its job at build time, we have very nearly zero frontend libraries that ship to users and would cause bloat.
I chose Svelte because it's similar in syntax to Vue, but more well-loved and it builds apps that run faster with its fine-grained reactivity model. We actually started the project with Vue and, about a year into development, we found its virtual DOM was causing too many garbage collection freezes when the UI got updated every frame by the Rust Wasm backend. (Porting to Svelte turned out to be a really good idea. Svelte is amazing.)
I started by choosing Vue.js because it nicely separates its HTML, CSS, and JS sections which theoretically would make it easier to someday rewrite the whole UI in a native Rust GUI framework, so the logic and layout wouldn't be intertwined based on the opinionated nature of the particular framework like React.
Building all the components from scratch was a practical necessity, even though component libraries are popular. We need full control over every aspect of every widget to suit our exact requirements for matching the UI design language I've built. Third-party libraries would be bloated and may lack the depth of customizability we require. I'm also very skilled at HTML/CSS development and have a not-in-house attitude towards other web code since I don't feel like the tradeoffs are worth it. So that's why I wrote all our components from scratch: customizability and maximal performance.
At the end of the day, the browser is just an operating system with a really robust GUI API. It just takes discipline to use it well and keep it lightweight. With that attitude, it's possible to make a very responsive, native-feeling UI that can actually beat out many truly native UIs in other apps. Just because it's an application in an OS that's in another OS doesn't mean it's inherently slow! People just associate it with the many sluggish web apps they're used to using from lazy web developers.
Also see the Q1 progress report: https://graphite.rs/blog/graphite-progress-report-q1-2024/
Graphite is a new open source, Rust-based 2D design app combining traditional graphics editors with node-based, non-destructive procedural design workflows to bring actual innovation back to the world of graphic design. Our mission is to recreate Blender's success as the de facto tool in its creative discipline.
As the project founder, I'd be happy to answer questions here— ask away!