DeepNotes - End-to-end encrypted visual note-taking with Yjs

Hi guys! I wanted to share the app I’ve been developing with Yjs.

DeepNotes is an open source, realtime collaborative, end-to-end encrypted visual note-taking tool with deep bidirectional page navigation. It’s the result of the friction I had with popular note-taking apps like Notion, Obsidian, Roam Research, Evernote, Heptabase, etc.

Each page is represented by a Yjs document. Document updates are encrypted before being sent to the server. They are broadcasted through Redis pubsub (inspired by @kapv89’s project). The server stores these encrypted updates and periodically asks the client to merge them.

Awareness updates are also encrypted before being sent to the server. They expire after 30 seconds, so when a user connects they receive only encrypted awareness updates of the past 30 seconds.

The backup and restore functionality was implemented using @wmhilton’s solution with UndoManager.

Let me know what you think. I’ve had so much help from this community it’s incredible. Thank you!

6 Likes

Wow, impressive :+1: ! Did you build it all by yourself?

It looks really good and works well. Just that I don’t really use notes like these myself much. For discoverability it might be smart to integrate it as a Google Drive app. I remember using draw.io long ago and didn’t enjoy it that much.

Thank you! Yes, I’ve been building it by myself for a little over a year.

By Google Drive app, you mean adding it as a file opener?

I think DeepNotes is too different from draw.io to be able to act as a file opener/manager.

It’s designed more as a personal knowledge management tool rather than a diagramming tool (though it can be used to create diagrams), so there are a few features that make it unsuitable to integrate Google Drive, like the group system or the real-time end-to-end encrypted collaboration.

The idea with DeepNotes is for it to be the ideal place to store deeply connected pages or visual Zettelkastens, hence the name DeepNotes.

1 Like

:call_me_hand: just saying there’s a lot of options. It might be hard to find an audience. And just people to discover your app. But good luck!

Really impressive Gustavo!
I’m also considering how to structure data. May I ask whether the single Y.Doc per page worked out a straightforward, or were there a lot of obstacles to overcome? Also, did you found an audience for your app?