This project is currently focused on single-user applications with client-side encryption that do not need to be real-time. It's become apparent that for these sort of use cases at least, CRDTs present a difficult development and user experience challenges. Localful will move to offer a less advanced but easier to develop and reason about system of explicit version history/management.
API Changes
Base, Info, Users systems to remain unchanged
Vaults resources to be added, which can have entities which can have versions.
No client to server websockets needed. Server to client websocket can be used to listen for updates such as vault edits, new versions etc.
No CRDT support, but Indexdb based storage of entities. Built in support for validating entity types and version data. Entities are immutable and just store data like id. Versions store all content, and are also immutable.
version retention policies (server and/or clients) to get rid of older versions? UX can be built to view and manage content versions.
Entites can have different types, but content in entities and versions is still stored as single encrypted data blob.
This project is currently focused on single-user applications with client-side encryption that do not need to be real-time. It's become apparent that for these sort of use cases at least, CRDTs present a difficult development and user experience challenges. Localful will move to offer a less advanced but easier to develop and reason about system of explicit version history/management.
API Changes
/vaults [GET, POST]
/vaults/:vaultId [GET, PATCH, DELETE]
/vaults/:vaultId/entities [GET, POST]
/vaults/:vaultId/entities/:entityId [GET, DELETE]
/vaults/:vaultId/entities/:entityId/versions [GET, POST]
/vaults/:vaultId/entities/:entityId/versions/:versionId [GET, DELETE]
Client Changes