yjs
cardi
Our great sponsors
yjs | cardi | |
---|---|---|
42 | 5 | |
10,437 | 82 | |
4.8% | - | |
7.6 | 0.0 | |
3 days ago | 7 months ago | |
JavaScript | JavaScript | |
MIT | GNU General Public License v3.0 only |
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
cardi
-
Show HN: WebCrate – an open source, social and self-hosted bookmarking tool
> Deta Space made it really easy for me as dev to build something like WebCrate quickly and it's also awesome for users. The app keeps running even if I disappear and hosting, auth etc. is all handled for me
Ah yeah, love the concept, I had similar goals in mind when making Cardi (although I wasn't aware of many options at the time for putting data in control of the user -- I ended up just having people log in with AWS access keys and it stores data in DynamoDB, which is weird but has actually been working great so far).
https://github.com/pickledish/cardi
Anyways Deta seems interesting, looking forward to seeing where it goes from here! Would love more/better options in this space.
-
Kanban board in one HTML using localstorage
Ha, I'm very interested in this!
I had this same problem for my own app[0], I ended up solving it by just using dynamodb in my personal AWS account as the storage. Generous free tier, great uptime, and no users, security, etc to manage for me, like you mention.
It's way more technical than I'd like of course, since anyone who wants to use it needs to have a personal AWS account. And it isn't "synced", like you say, it's just using the AWS JS SDK to speak to dynamodb directly. But still it's been a real pleasure to build a web app this way -- the fact that anyone can use the app by plugging in their own storage is kind of the web development holy grail IMO.
-
Show HN: Cardi – store your notes for free in AWS DynamoDB
Hey thanks! I wouldn't say it's a hard dependency, in fact it can work with other things that are API-compatible with DynamoDB, like Scylla for example if you wanted to self-host everything:
http://scylla.docs.scylladb.com/master/alternator/alternator
And in terms of using something like Firestore, the storage needs of this are very simple so it wouldn't be very hard to add that in. I tried to keep all the persistence-related functionality separated off for this purpose:
https://github.com/pickledish/cardi/tree/master/src/dynamodb
What are some alternatives?
automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
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.
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.
milkdown - 🍼 Plugin driven WYSIWYG markdown editor framework.
Visual Studio Code - Visual Studio Code
awesome-react-state-management - ⚛️ ・React state management tools and libraries
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