GSoC 2024: Joplin Sync Library

With the conclusion of Google Summer of Code 2024, we’re thrilled to share that four of our sponsored projects achieved remarkable success!

Continuing our series of posts highlighting each project, today we’re featuring the work of @benjiman. With his project, the "Joplin Sync Library", he provides an API to read and write data to remote storage directly and keep them in sync, without having to rely on the Joplin application.


Contributor: @benjiman

For end users, Joplin application handles synchronization (file uploads/downloads... to remote storage) automatically.
To add the capability for programmers to do that in code, I created this project: Joplin Sync Library.

Joplin Sync Library provide an API to read and write data to remote storage directly and keep them in sync. This allows more control, customization, we can make plugins/scripts to aggregate data from remote storage for example.

The biggest challenge is to make the project depends as little as possible on the original codebase. I rewrote many parts, but some parts aren't rewriteable because it'll be hard to maintain (encryption modules for example). Also, some edge cases may happen while syncing (network failures during sync, invalid timestamp, sync logics bugs...).

Overall, basic (CRUD) operations are supported. Use cases are demonstrated in unit test, documentations and demos,...

3 Likes

I would like to see some links to the mentioned project documentation

Let me try to understand this.

The current logic is, for sync to happen, even programmatically, you have to have the application running. So, what this project does is make the databases more accessible without the application running? I.e., you can sync data across without Joplin running?

Or is it more that you can reach across the network without the local DB even being synced?

Hi @executed, this is some links:
Repository: GitHub - khuongduy354/joplin-sync-lib
Additional blog posts: Standalone Sync API - Joplin Forum
I recommend you stick to the markdowns file on Github as docs, as It's updated more frequently.

Hi @t0dd,
What I'm aiming to achieve is to sync data without Joplin (client applications) running.

I'm not sure I can get your question right, currently, we can read/write data without a local database (sqlite), data is returned in json format.