One year ago I started to explore combining CRDTs with end-to-end encryption to allow people to collaborate on the same documents/data. Couple months back I got a first prototype working. Think of a simple Google Docs, but end-to-end encrypted and offline-first (iOS & Android for now).<p>Why CRDTs?
Every document is a CRDT data structure. This is very important for conflict resolution. With CRDTs this can happen on the client and everyone can resolve to exactly the same state of the document once all the updates are synchronised.<p>This basically allows to exchange the updates/data via end-to-end encryption. Initially I started out using the Matrix protocol, but in order to develop further synchronization optimization I started to directly use Matrix's Olm/MegOlm encryption library.<p>The app/client source is available here: https://github.com/SerenityNotes/serenity-notes-clients
Website: https://www.serenity.re/en/notes<p>Feedback, ideas and question are very welcome!