Rust libraries to read Joplin

Hey there,

so I'm a big fan of Joplin and have been using it for my notes for some while now (propably around a year-ish). I am currently working on a private project where I collect a lot of my data for discovery and other processing. Part of my data is my notes taking in Joplin, but reading these notes programmatically without having a Joplin server / API running has caused me some headaches. At first I tried to hack it together with docker, which was working, but really buggy.
I resolved to implementing a Joplin reader library in Rust, which I published here: https://crates.io/crates/joplin-reader/0.0.1

For it to work with my encrypted notes I also had to implement a sjcl library, which you can find in its dependencies. It's still a bit rough, but it works in general. A Joplin folder can be read, notes can be decrypted, and the content can be retrieved. I will continue working on this until it fits all my use-cases, but wanted to share it with you guys now.

Questions, feedback and suggestions are welcome :slight_smile:

3 Likes

Very nice!

Can you explain how are you using it? Do you have Joplin set up to sync with file system and read from there?

For sjcl there seems to be a crate already: SJCL — Rust library // Lib.rs


I was also experimenting with Rust for Joplin: reimplemented part of renderer as a native node module using neon. The whole electron integration part turned out to be very easy with neon.

That crate is the crate I built :innocent:

I basically use Joplin for my general note taking, but also my Kindle synchronizes highlights and notes into Joplin. I use Joplin on iOS, work laptop, home desktop and travel laptop.

I sync it into my NAS, where a lot of my data resides. I am currently exploring ways to gather it all together (Joplin, Zotero, banking/account/finance info, documents & scans, ...) and I use this library (will use this library) to access my synced Joplin notes.

In the end it will all wrap into a web service.
Hope that answers your question.

Yep, found that and was just about to edit my comment.

A word of warning/advice: take extra care if you're going to write to files in the Joplin sync dir - it can be a source of sync issues which a very hard to debug.

An alternative solution might be to reimplement Joplin Server API in Rust and then add on any custom logic you need.
I have actually though about it - sounds like a fun project, but just don't have time for this right now.

I just did not want to run Joplin on my NAS. I already synchronize it there and I have not found a way to start a read-only instance on an already existing set of Joplin data. It looked like it will always redoqnload everything. As I said I tinkered with Joplin server and docker but it was messy, and I really only want a read-only access to my Joplin notes :slight_smile:
Also it was fun! And I could, so why wouldn’t I? :wink:

Thanks for the feedback