랭킹으로 돌아가기

YousefED/SyncedStore

TypeScriptsyncedstore.org

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

crdtyjsreactive-programmingcollaborativecollaborationconflict-resolutionvuereactoffline-firstjavascriptsvelte
스타 성장
스타
1.9k
포크
58
주간 성장
이슈
19
5001k1.5k
2021년 5월2023년 1월2024년 10월2026년 7월
아티팩트npmnpm install syncedstore
README

SyncedStore CRDT

npm version Coverage Status

Discord

(This library was previously called "Reactive-CRDT")

SyncedStore is an easy-to-use library for building collaborative applications that sync automatically. It's built on top of Yjs, a proven, high performance CRDT implementation.

TL;DR

Create apps like this:

SyncedStore CRDT screencapture

Play with this example

Using an API as simple as this:

// add a todo
store.todos.push({ completed: false, title: "Get groceries" });

// set todo to completed
store.todos[0].completed = true;

Documentation

View the documentation with interactive code samples

You can find the SyncedStore documentation on the website.

Examples

We have several examples on the website (React, Vue, Svelte) as part of the documentation.

In this repository, there are also more complex examples based on TodoMVC (examples/todo-react, examples/todo-vue, examples/todo-svelte).

example app screencapture

  • Open live demo: React or Vue (Of course, open multiple times to test multiplayer)
  • Edit / view on Codesandbox React / Vue

Motivation

SyncedStore makes it easy to develop applications that:

  • 👨‍👩‍👧‍👦 Are collaborative: create multi-user and multi-device experiences without the need to handle complex conflict resolution management yourself.
  • 🚀 Are fast: operations are handled locally, and data synchronization with other users and devices happens quietly in the background. 0 Latency!
  • 🔗 Work offline: cloud apps typically don’t work while offline. Supporting both data sync and offline used to be difficult, SyncedStore aims to simplify this.

Perhaps most importantly, it makes it easy to build decentralized applications. This has a lot of security & privacy benefits compared to always relying on central (expensive) servers to keep track of all our data.

Read more about the benefits of Local-first software in this essay

In short, with some technological magic of so-called CRDTs (Conflict-free Replicated Data Types), we can build cross-device apps that are more collaborative, faster, work offline AND put the user back in control of their data.

Feedback

I'd always love to hear how you're using SyncedStore. Definitely open an issue if you need help, get in touch via Twitter, or join the discussion in the Yjs forums.

Credits ❤️

SyncedStore builds directly on Yjs and Reactive. It's also inspired by and builds upon the amazing work by MobX and NX Observe.

SyncedStore is built as part of TypeCell. TypeCell is proudly sponsored by the renowned NLNet foundation who are on a mission to support an open internet, and protect the privacy and security of internet users. Check them out!

NLNet

관련 저장소
toeverything/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.

TypeScriptnpmOthereditorcrdt
affine.pro
70.7k5.1k
pubkey/rxdb

The local-first database that runs on every JS runtime and replicates with your existing backend - no vendor, no lock-in - https://rxdb.info/

TypeScriptnpmApache License 2.0databasenosql
rxdb.info
23.3k1.2k
yjs/yjs

Shared data types for building collaborative software

JavaScriptnpmOtheryjscrdt
docs.yjs.dev
22.2k791
amark/gun

An open source cybersecurity protocol for syncing decentralized graph data.

JavaScriptnpmOthermachine-learningartificial-intelligence
gun.eco/docs
19.1k1.2k
automerge/automerge-classic

A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.

JavaScriptnpmMIT Licensecrdtjavascript
automerge.org
14.7k460
electric-sql/electric

The agent platform built on sync.

TypeScriptnpmApache License 2.0elixirpostgres
electric.ax
10.3k349
berty/berty

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

TypeScriptnpmOtherbertyipfs
berty.tech
9.2k496
orbitdb/orbitdb

Peer-to-Peer Databases for the Decentralized Web

JavaScriptnpmMIT Licensep2pdistributed
8.8k596
supabase/realtime

Broadcast, Presence, and Postgres Changes via WebSockets

ElixirApache License 2.0elixirpostgres
supabase.com/realtime
7.6k451
toeverything/blocksuite

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

TypeScriptnpmMozilla Public License 2.0blockcollaboration
blocksuite.io
5.9k559
loro-dev/loro

Make your JSON data collaborative and version-controlled with CRDTs

Rustcrates.ioMIT Licensecrdtlocal-first
loro.dev
5.9k159
tinyplex/tinybase

A reactive data store & sync engine.

TypeScriptnpmMIT Licensereactjavascript
tinybase.org
5.1k130