yjs
awesome-react-state-management
Our great sponsors
yjs | awesome-react-state-management | |
---|---|---|
43 | 1 | |
11,040 | 221 | |
6.9% | - | |
6.7 | 0.0 | |
about 16 hours ago | about 1 year ago | |
JavaScript | ||
MIT | - |
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
-
Show HN: Nostr-CRDT – real-time collaborative apps over Nostr
Hi HN!
Nostr-CRDT is an experimental project that connects Yjs [1] (a proven, high performance CRDT) with Nostr [2].
I wanted to learn about the Nostr protocol and see if it'd be possible to send updates to state (e.g.: edits of a rich text document, updates to a todo list) over Nostr.
Nostr describes itself as "The simplest open protocol that is able to create a censorship-resistant global "social" network once and for all.".
I like the idea of a decentralized social network, but what if we can decentralize more kinds of apps and create decentralized, local-first collaborative applications? I've been exploring this area for a while and earlier shared a Show HN post that does this over Matrix [3].
There's still lots to figure out, but imo it's a very exciting and rapidly developing space - looking fwd to your thoughts already!
[1] https://github.com/yjs/yjs
[2] https://github.com/nostr-protocol/
[3] https://news.ycombinator.com/item?id=29978659
PS: for an instant demo you can open this link and click the green button to load the doc and connect over Nostr (using a new anonymous account): https://nostr-crdt-yousefed.vercel.app/#room=6d749539e1dd9ef...
-
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
awesome-react-state-management
-
Todos: The Hard Parts
First we look at solutions to the DOM data binding problem. There are a ton:
What are some alternatives?
automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
liveblocks - Liveblocks is a real-time collaboration infrastructure for developers.
automerge-rs - Rust implementation of automerge [Moved to: https://github.com/automerge/automerge]
crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.
milkdown - 🍼 Plugin driven WYSIWYG markdown editor framework.
pacman-backup - :floppy_disk: Pacman Backup tool for off-the-grid updates via portable USB sticks or (mesh) LAN networks.
MobX - Simple, scalable state management.
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.
Visual Studio Code - Visual Studio Code
cardi - A full-featured, static-generated PWA for notes stored in privately owned DynamoDB tables
kanban - A basic kanban board in a single HTML file using browser native drag & drop and localStorage for persistence
player.html - One file drop-in video player web app for using video files served using basic directory listing