Giter Site home page Giter Site logo

robertheessels / syncedstore Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yousefed/syncedstore

0.0 0.0 0.0 9.31 MB

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

Home Page: https://syncedstore.org

License: MIT License

JavaScript 0.62% TypeScript 99.38%

syncedstore's Introduction

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

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

syncedstore's People

Contributors

aubergene avatar bogobogo avatar getflourish avatar ismail-codar avatar jasonm avatar rhaenni avatar skaterdad avatar yousefed avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.