CRDT

Open-source projects categorized as CRDT

Top 23 CRDT Open-Source Projects

  • AFFiNE

    There can be more than Notion and Miro. AFFiNE(pronounced [ə‘fain]) is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use.

    Project mention: Are we making the best notion open source alternative? | news.ycombinator.com | 2024-01-20

    Also has a self-hosted version however it’s a bit out of date with their SaaS product

    https://github.com/toeverything/AFFiNE#self-host

  • RxDB

    A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/

    Project mention: Ask HN: How Can I Make My Front End React to Database Changes in Real-Time? | news.ycombinator.com | 2024-04-17

    I'm interested in this problem also!

    I think there is a large overlap with projects that market/focus on offline-first experiences.

    AFAIK this problem can be solved by:

    1) Considering a client-side copy of the database that gets synced with the remote DB. This is an approach [PowerSync](https://www.powersync.com/) and [ElectricSql](https://electric-sql.com/) and [rxdb](https://rxdb.info/) take!

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

  • gun

    An open source cybersecurity protocol for syncing decentralized graph data.

    Project mention: gun: NEW Data - star count:17470.0 | /r/algoprojects | 2023-10-28
  • yjs

    Shared data types for building collaborative software

    Project mention: Show HN: Collaborate on your YC Application with CRDT-powered forms | news.ycombinator.com | 2024-02-21
  • orbitdb

    Peer-to-Peer Databases for the Decentralized Web

    Project mention: OrbitDB reaches version 1.0 after 8 years of development | news.ycombinator.com | 2023-09-19
  • berty

    Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network

  • realtime

    Broadcast, Presence, and Postgres Changes via WebSockets

    Project mention: A Technical Dive into PostgreSQL's replication mechanisms | news.ycombinator.com | 2024-01-11

    You can LISTEN/NOTIFY. Or you can use logical replication and a custom subscriber.[1] Supabase uses the latter.[2]

    [1]: https://www.postgresql.org/docs/current/logical-replication....

    [2]: https://github.com/supabase/realtime

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • FluidFramework

    Library for building distributed, real-time collaborative web applications

    Project mention: FluidFramework: Build distributed, real-time collaborative web applications | news.ycombinator.com | 2024-01-11
  • blocksuite

    🧩 Content editing tech stack for the web - BlockSuite is a toolkit for building editors and collaborative applications.

    Project mention: BlockSuite is the open-source block-based editor | news.ycombinator.com | 2023-07-26
  • liveblocks

    Liveblocks is a platform to ship collaborative features like comments, notifications, text editors in minutes instead of months.

    Project mention: Edit This Blog Post | news.ycombinator.com | 2024-02-06

    Absolutely! The real complexity comes from conflict resolution. If someone edits the top, and someone else edits the bottom, which version do you go with? What if they're editing the same area? Entire companies exist to provide elegant solutions to this[0], so it's no simple task.

    0: https://liveblocks.io/

  • cr-sqlite

    Convergent, Replicated SQLite. Multi-writer and CRDT support for SQLite

    Project mention: Show HN: RemoteStorage – sync localStorage across devices and browsers | news.ycombinator.com | 2024-01-12

    I'm a happy user of https://github.com/vlcn-io/cr-sqlite/

  • SyncedStore

    SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.

    Project mention: Local-first software: You own your data, in spite of the cloud (2019) | news.ycombinator.com | 2023-10-02

    This article has been quite the inspiration for many projects and progress on this front. I think we're seeing more and more developments around CRDTs and local-first frameworks / applications.

    I'm working on a few projects in this area:

    - https://www.typecell.org - Notion meets Notebook-style live programming for TypeScript / React

    - https://www.blocknotejs.org - a rich text editor built on TipTap / Prosemirror that supports Yjs for local-first collaboration

    - https://syncedstore.org - a wrapper around Yjs for easier development

    In my experience so far, some things get more complicated when building a local-first application, and some things get a lot easier. What gets easier is that once you've modeled and implemented the data-layer (which does require you to rethink / unlearn a few principles), you don't need to worry about data-fetching, errors etc. as much as in a regular "API-based" app.

    Another interesting video I recommend on this topic is about Linear's "Sync Engine" which employs some of the local-first techniques as well: https://www.youtube.com/watch?v=Wo2m3jaJixU

  • diamond-types

    The world's fastest CRDT. WIP.

    Project mention: Open source P2P alternative to Slack and Discord built on Tor and IPFS | news.ycombinator.com | 2023-09-11

    > I think far more interesting these days would be projects like Veilid, Hyphanet's Locutus

    I have not assessed Veilid yet but it's on my list and at a first glance seems like a very serious and informed attempt. I'm personal friends with Freenet / Hyphanet's Ian Clarke and spoke with him about Locutus when he was just getting started. It sounded awesome then and I will give this a second look too, though when he explained it to me it sounded like it had the same limitations with deletion that Nostr or the global IPFS network would have. It does seem important to note here that both Veilid and Locutus are much less mature and battle-tested than libp2p and Tor and have less Lindy longevity (longevity as a function of age.) We already suffer a lot from being on the bleeding edge, so it's nice to limit the number of bleeding edge tools we use. Libp2p, notably, has been rock solid for us and barely a time drain at all, apart from some unexpected interactions with Tor which are mostly about the lack of an official first-class Tor transport, which is specific to our use case and should start to change soon when Tor's Arti is ready.

    > and ultimately Nostr -- even though not truly P2P in that sense -- which already happens to have a first try going with nostrchat.io.

    Nostr and Bluesky both seem very promising for the open-world use case of social networking, and it has been amazing to see Nostr grow so rapidly as a community. I am rooting for this project and we might use it someday in Quiet for public feeds. Timed deletion is the user requirement that drives me away from building Quiet on Nostr. Based on conversations I've had with users doing sensitive work (and based on my own experience as a founder of Fight for the Future) timed deletion is extremely important to team security, and for deletion to be meaningful one needs more control over where the data is relayed than what Nostr provides in the default mode. A group that wanted trustworthy timed deletion would have to control their own private Nostr relay. Technically, a Tor relay could subvert the timed deletion of some Quiet messages just by capturing all traffic, but this is much less of a worry.

    > If P2P is something that is truly desired, I feel like projects like Briar (https://briarproject.org/how-it-works/) have solved this with Bramble (https://code.briarproject.org/briar/briar-spec/blob/master/p...) more eloquently than it could be done on top of IPFS.

    Bramble could work for us and I would recommend that anyone look into it. Briar is probably the most similar thing to Quiet that exists right now. There are big differences between Quiet and Briar, but we could definitely build Quiet on Bramble if it adequately supports iOS. My worry would be its maturity as a tool for people building things other than Briar. That could be worth the risk though and I do recommend anyone else reading this thread look at Bramble if you are doing something similar.

    > I could nevertheless imagine it being overtaken fairly quickly by other projects sporting a rather lightweight and more managable basis, that allows for increased development speed and ultimately for faster iteration on features that users might wish for (e.g. DMs, @-mentions, message deletion, mobile clients, you-name-it) -- without the need to invest heavily into e.g. performance (or reliability!) issues of the underlying framework.

    This is definitely something we will keep an eye on, and thank you for the thoughtful advice! My guess is that as soon as we have a significant number of real users we will need to build things that don't happen to be supported by whatever stack we choose (whether that is our current stack, Bramble, Veilid, Automerge, etc.) So the question is what's the easiest one to maintain and adapt. So far libp2p and IPFS have both been good in that department: implementations in many languages, active development, an absence of major problems showing signs of maturity (especially in libp2p), etc.

    Also, my 2 cents are (for anyone following along) that if I had to do this all over again I would use Tor + Libp2p + Automerge. Libp2p and Gossipsub are solid, flexible, and will be around a while. No need to reinvent the wheel. The conceptual framework behind Automerge and Briar/Bramble are pretty similar (sync state!) but the Automerge team exists to serve people building other apps, while the Bramble team mostly focuses on Briar AFAIK. What's nice about Automerge is that the community around it (Ink & Switch, Martin Kleppmann, and other academics) is all at the academic frontier, so the level of thought and anticipation of user needs that goes into their decisions is very thorough, even if the implementations lag behind the papers. If I was doing real-time text I would also look at the Briar project and Seph Gentle's work on Diamond Types, since that's where the most thought has gone into the raw performance you need for text CRDTs that can handle large documents: https://github.com/josephg/diamond-types

  • y-crdt

    Rust port of Yjs

    Project mention: Show HN: Modyfi – a multiplayer design platform built in Rust and wgpu | news.ycombinator.com | 2024-01-17

    Definitely agree that would be valuable. In fact our multiplayer state synchronization aspect is largely implemented in TypeScript (there's a TS element to the stack as well), and is built on top of YJS – there is a Rust implementation of YJS already though, which would likely be a great start for anyone looking to build something similar purely in Rust: https://github.com/y-crdt/y-crdt

    We are working on a plugin API, which will allow people to build functionality that leverages the multiplayer data model – but within the app rather than as standalone applications.

  • rust-crdt

    a collection of well-tested, serializable CRDTs for Rust

  • OctoBase

    🐙 OctoBase is the open-source database behind AFFiNE, local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.

    Project mention: OctoBase: Local-first, collaborative data engine written in Rust | news.ycombinator.com | 2023-06-28
  • evolu

    Local-first platform designed for privacy, ease of use, and no vendor lock-in

    Project mention: Local-first software: You own your data, in spite of the cloud (2019) | news.ycombinator.com | 2023-10-02

    I made a local-first platform designed for privacy, ease of use, and no vendor lock-in to sync and backup precious data using SQLite and CRDT.

    https://github.com/evoluhq/evolu

  • hocuspocus

    The CRDT Yjs WebSocket backend for conflict-free real-time collaboration in your app.

    Project mention: Launch HN: Tiptap (YC S23) – Toolkit for developing collaborative editors | news.ycombinator.com | 2023-08-01

    Hi HN! We're Nick, Patrick, Philip, Sebastian, Sven, and Timo from Titap (https://tiptap.dev/), an open source developer toolkit for building collaborative editing apps. Our editor framework, based on ProseMirror, is at https://github.com/ueberdosis/tiptap, and our real-time collaboration backend, based on Yjs, is at https://github.com/ueberdosis/hocuspocus.

    Building editor interfaces like Notion or Google Docs in your web app takes a lot of work and time. Our open source tools and cloud services let you build collaborative content editing faster—in days or weeks, rather than months or years. And this is just for the editor. If you want real-time collaboration or other advanced features like version history in your editor, the overall workload quickly escalates—you will need a robust and serious backend infrastructure that requires even more time to set up and maintain. This doesn’t make sense for most frontend developers or most startups.

    We spent eight years as a digital agency developing applications with complex content editing functionality. We learned the hard way how limited the existing editors were. After building Tiptap as a headless editor framework with an extension-based architecture, we needed to allow multiple users to edit content simultaneously, which got complicated. There was no simple solution that could be integrated quickly. So we built that too.

    The Tiptap editor is based on the JS framework ProseMirror, which is a good foundation for editors. The learning curve for ProseMirror is steep because it's complicated to understand and lacks simple APIs and documentation. It takes a lot of code around ProseMirror to develop a modern user experience. We’ve taken care of that for you.

    Tiptap is headless, so it will work with whatever frontend or design you have in mind—we make no assumptions about your UI. You can use it to develop block-based editors like Notion, classic interfaces like Google Docs, or whatever you need. It's also framework agnostic, so you can use it with React, Vue, etc., or vanilla JavaScript. And it's highly customizable through our extension architecture. We also provide an API to access ProseMirror's internals through Tiptap if you want to dig deep into the core.

    Adding real-time collaboration to your editor is as easy as installing and configuring an extension. Our collaboration backend, called Hocuspocus, uses Yjs. This is a widely used implementation of CRDTs (conflict- free replicated data type). Hocuspocus makes it easy to set up a Node.js websocket server to handle communication between multiple peers to synchronize data. Like the Tiptap editor, Hocuspocus is designed to be extensible according to your needs. Also, Hocuspocus can work independently of Tiptap with other editors like Lexical or Slate.

    An earlier version of Tiptap got discussed a couple years ago at https://news.ycombinator.com/item?id=26901975. We’ve been enjoying wider adoption since then. For example, Substack uses Tiptap for their editor that allows creators to write content on substack.com, and YC uses Tiptap in their Bookface forum (which is basically HN for YC alums).

    With the Tiptap Cloud, we offer managed backend services if you don't want to build and maintain every feature yourself. For real-time collaboration, we provide a cloud infrastructure with multiple datacenter regions where you can deploy Hocuspocus. The Tiptap AI integration beta is a service where you connect your OpenAI API key to our backend and install the Tiptap editor AI extension to get AI writing experience in your editor. Here’s a demo: https://ai-demo.tiptap.dev/

    We invite you to explore Tiptap's capabilities in your app, contribute to its open source development, and (hopefully!) join our welcoming community. We'd love to hear what you've already built with Tiptap or what's stopping you from creating something with it :-) We look forward to all of your comments!

  • mesh

    A tool for building distributed applications. (by weaveworks)

  • redwood

    A highly-configurable, distributed, realtime database that manages a state tree shared among many peers. (by brynbellomy)

  • triplit

    A full-stack, syncing database that runs on both server and client. Pluggable storage (indexeddb, sqlite, durable objects), syncs over websockets, and works with your favorite framework (React, Solid, Vue, Svelte).

    Project mention: Triplit: Open-source DB that syncs data between server and browser in real-time | news.ycombinator.com | 2024-01-12

    If you want to try that out, we use Sqlite in our server implementation so you can see an example there: https://github.com/aspen-cloud/triplit/blob/main/packages/se...

  • Matrix-CRDT

    Use Matrix as a backend for local-first applications with the Matrix-CRDT Yjs provider.

    Project mention: Help - chat server | /r/node | 2023-04-29
  • delta_crdt_ex

    Use DeltaCrdt to build distributed applications in Elixir

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2024-04-17.

CRDT related posts

Index

What are some of the best open-source CRDT projects? This list will help you:

Project Stars
1 AFFiNE 30,061
2 RxDB 20,542
3 gun 17,763
4 yjs 15,052
5 orbitdb 8,103
6 berty 7,283
7 realtime 6,451
8 FluidFramework 4,613
9 blocksuite 3,688
10 liveblocks 3,029
11 cr-sqlite 2,407
12 SyncedStore 1,612
13 diamond-types 1,415
14 y-crdt 1,298
15 rust-crdt 1,279
16 OctoBase 1,094
17 evolu 1,031
18 hocuspocus 978
19 mesh 867
20 redwood 839
21 triplit 830
22 Matrix-CRDT 712
23 delta_crdt_ex 472
Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com