Node painter is a graph based visual programming tool I’ve been working on since 2024. It’s designed to make small looping animation. Like this:
Why
The app is entirely browser based, made with react and typescript.
I’ve been looking for a solution to synchronize my sketch across device for years. The most obvious solution would have been to implement a backend but I really really don’t want to be responsible for other people data.
Another solution would have been storing it as file on the user device to be synchronized with git, but with no direct access to the file system, the UX / Flow would have been terrible.
So I’ve been looking for a solution like remoteStorage for years!
I’ve briefly considered Solid but, although it looked more popular, it also seemed way more complicated.
How
I’ve added remoteStorage with the remoteStorage.js lib.
I already had a browser based local storage solution (using localStorage and indexedDb) so I’m not using the cacheSystem of rm.js . Basicaly remoteStorage is just added as a optional extra layer of storage on top of the existing system.
I’m not using or publishing a public data module either cause I don’t see a point in reusing NodePainter specific data format and save file elsewhere.
I’ve also added the ability to download all of your data as a zip file. I’m currently using a 5apps account but I’m planing to run my own rm instance later so the data export make futur change easier.
Futur plan
At some point It would be nice if you could “Publish” a sketch publicly with a sketch and I think remote storage may let me do that If i understand the documentation correctly.
Try it out
The option to connect to remote storage is in the settings !
I just connected my account and I see it stores the data when I click save to remote storage. Might be nice to save automatically at some point, but I guess that’s more of an app-wide question.
At some point It would be nice if you could “Publish” a sketch publicly with a sketch and I think remote storage may let me do that If i understand the documentation correctly.
Yup, just save to /public and you’ll get a URL.
Another solution would have been storing it as file on the user device to be synchronized with git
I’m working on a rs server backed by git, hopefully will share soon.
Welcome to the community, @grifdail! I think remoteStorage is a perfect fit for your use case.
The caching can lift a lot of extra work from your shoulders, should you ever decide to allow automatic background sync for the app data. However, as you found out, it’s entirely optional.
Sharing documents/files is indeed possible and straightforward. There’s a dedicated documentation page for it. The gist is to use either the publicClient in your custom data module, or scope your custom base client to /public/yourcategory. Then you can get the full public URL by using getItemURL().
The reason I didn’t use caching is that i already had a full full local storage implementation so the rm.js solution was very reddudante.
Since last week i made a tiny drawing app in 2 days and this time I implemented remote storage from the start so I am using the cache system, even for unlogged user and it is great !
I have another app called Note that do use custom backend, so I guess I’m gonna rework it to replace the backend with remoteStorage.
You’re right. I’ve been using this “Manual flow” because I’ve considered sketch being throaway thing, but now that I’ve been using rm for a week, my rellationship to them feel different and I think I’d prefere to save everything from the start. I’ll likely be changing that soon.