We want applications:
- That don't break on network hiccups
- That can sync across devices
- Allow users to collaborate
- Allow users to view and edit their data while offline
- Have instant interactions
While Vulcan can be run in a traditional client-server setup, it also supports P2P replication and syncing. In other words, a truly serverless setup. One where each device on the network is a peer and there is no server to serve as a central point of failure.
The base of everything is cr-sqlite. An extension to SQLite to enable it to merge in changes from other databases and automatically resolve merge conflicts.
This means that users can write to their local database and merge those changes with other users or devices who may have also made independent changes to their local database. Merging can happen in real time or lazily as network conditions allow.
In technical terms: cr-sqlite adds multi-master replication (opens in a new tab) and partition tolerance (opens in a new tab) to SQLite via conflict free replicated data types (opens in a new tab) (CRDTs).
It's like git, for your data.
This capability is the foundation of the 5 features listed above as all of these involve a "merging of edits" problem.
For those that want a better understanding of the theory behind Vulcan & cr-sqlite, see the deep dive section. Otherwise, continue to the getting started section.