automerge
slate-yjs
Our great sponsors
automerge | slate-yjs | |
---|---|---|
42 | 1 | |
1,245 | 403 | |
-1072.8% | - | |
4.9 | 6.1 | |
3 days ago | 4 months ago | |
JavaScript | TypeScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
automerge
-
Best local database that works on all platforms including web?
Yes. I asked the devs about ideas for this in this ticket and got an interesting response. It's aimed towards server-side handling, but the same ideas apply to local storage as well.
- Show HN: Pg_CRDT – an experimental CRDT extension for Postgres
-
CRDTs: A Beginner's overview for building a collaborative app
There are a lot of implementations of CRDTs out there. In JavaScript, for instance, we have Y.js (https://github.com/yjs/yjs) and automerge (https://github.com/automerge/automerge). There’s also a Y.js demo (https://demos.yjs.dev/prosemirror/prosemirror.html) that allows you to play around with them and have your own collaborative app running in just a few seconds. All messages are exchange via webRTC and manages the state via CRDTs. This can be a great sandbox to understand how CRDTs work and see.
-
Evan Wallace CRDT Algorithms
Anyone unsure of what a CRDT is, this is the perfect intro: https://www.inkandswitch.com/peritext/
The two most widely used CRDT implementations (combining JSON like general purpose types and rich text editing types) are:
- Automerge https://github.com/automerge/automerge
-
Should I Move From PHP to Node/Express?
For instance, practicing "local first web" using automerge with all it's Distributed Persistence Primitives on CRDT's and Vector Clocks - i.e. when the Browser View is treated like a Database replica, essentially; or adopting a real data mapper that's giving you an API from your database Schema, using Prisma or Hasura... or even implementing a custom codegenereted one, as a babel plugin, on top of TSED and Micro-ORM.
- Maintaining Referential Integrity During Insertions And Deletions
- Muse 2.0
-
I created an Excel-like React spreadsheet with collabration support
And about conflict --as already mentioned in comments-- CRDTs is the way to go here. Automerge is an implementation you may want to look into.
- Conflict-Free Replicated Data Types (CRDT)
- Automerge CRDT – Build local-first software
slate-yjs
What are some alternatives?
yjs - Shared data types for building collaborative software
y-websocket - Websocket Connector for Yjs
crdt-benchmarks - A collection of CRDT benchmarks
FluidFramework - Library for building distributed, real-time collaborative web applications
SyncedStore - SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.
teletype-crdt - String-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom.
y-crdt - Rust port of Yjs
automerge-rs - Rust implementation of automerge [Moved to: https://github.com/automerge/automerge]
rustpad - Efficient and minimal collaborative code editor, self-hosted, no database required
peritext - A CRDT for asynchronous rich-text collaboration, where authors can work independently and then merge their changes.
MobX - Simple, scalable state management.