yjs
automerge
Our great sponsors
yjs | automerge | |
---|---|---|
42 | 41 | |
10,219 | 14,306 | |
5.3% | 1.5% | |
7.8 | 5.9 | |
5 days ago | 20 days ago | |
JavaScript | JavaScript | |
MIT | 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.
yjs
-
Hindsight is a free and open-source retrospective board
No back-end. Data is shared via WebRTC directly between connected browsers. I'm using Yjs to help me with that.
- Show HN: Hindsight is a free and open-source retrospective board
-
Discussion Thread
also there is this Javascript library that implements Conflict Resistant Data Types
- 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.
-
CRDTs make multiplayer text editing part of Zed's DNA
Yjs is being quite heavily used in the industry[1], and being researched for even more companies. There are also demos showing how to integrate it with an existing rich text editors[2]. If you have some ideas about the missing parts, you could also open topic on discuss.yjs.dev - the documentation page (https://docs.yjs.dev) has tons of useful links.
Re. other purpose projects - Yjs/Yrs main target are sequential data structures (text, arrays), but it also has support for maps and xml-like elements. In general you can build most data structures with it. I agree that it would be nice to have some other applications in demos though.
-
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
- Maintaining Referential Integrity During Insertions And Deletions
-
Show HN: Yboard is a multiplayer desktop-like workspace based on CRDT
I've always been curious about real-time multiplayer user interfaces.
When I found out about CRDTs and Yjs[1] I thought they could serve as a solid base for a project like that.
So I built this pretty simple desktop-like UI (heavily inspired by lifeat.io) and used Yjs to replicate the whole UI state among multiple peers, creating the experience of a unique interface.
Try online: https://yboard.lol
-
Show: A multiplayer app to discuss and solve Leetcode questions with your friends.
[4]: https://github.com/yjs/yjs
automerge
- 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
- Is there a lib or a pattern for synchronizing a complex JSON over the network ?
What are some alternatives?
automerge-rs - Rust implementation of automerge
liveblocks - The all-in-one toolkit to build collaborative products like Figma, Notion, and more.
crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.
y-websocket - Websocket Connector for Yjs
crdt-benchmarks - A collection of CRDT benchmarks
FluidFramework - Library for building distributed, real-time collaborative web applications
logseq - A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. Use it to organize your todo list, to write your journals, or to record your unique life.
MobX - Simple, scalable state management.
pacman-backup - :floppy_disk: Pacman Backup tool for off-the-grid updates via portable USB sticks or (mesh) LAN networks.
Visual Studio Code - Visual Studio Code
milkdown - 🍼 Plugin driven WYSIWYG markdown editor framework.
cardi - A full-featured, static-generated PWA for notes stored in privately owned DynamoDB tables