{"id":13747946,"url":"https://github.com/yousefed/SyncedStore","last_synced_at":"2025-05-09T10:32:12.354Z","repository":{"id":39590109,"uuid":"363610361","full_name":"YousefED/SyncedStore","owner":"YousefED","description":"SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.","archived":false,"fork":false,"pushed_at":"2024-03-01T23:35:48.000Z","size":15283,"stargazers_count":1806,"open_issues_count":22,"forks_count":57,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-07T21:12:56.525Z","etag":null,"topics":["collaboration","collaborative","conflict-resolution","crdt","javascript","offline-first","react","reactive-programming","svelte","vue","yjs"],"latest_commit_sha":null,"homepage":"https://syncedstore.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YousefED.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-02T09:13:46.000Z","updated_at":"2025-03-30T02:47:36.000Z","dependencies_parsed_at":"2023-02-17T10:01:09.663Z","dependency_job_id":"50a0b01b-d5dd-41b5-977c-e1980058bf39","html_url":"https://github.com/YousefED/SyncedStore","commit_stats":null,"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YousefED%2FSyncedStore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YousefED%2FSyncedStore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YousefED%2FSyncedStore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YousefED%2FSyncedStore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YousefED","download_url":"https://codeload.github.com/YousefED/SyncedStore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253234178,"owners_count":21875561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaboration","collaborative","conflict-resolution","crdt","javascript","offline-first","react","reactive-programming","svelte","vue","yjs"],"created_at":"2024-08-03T07:00:30.821Z","updated_at":"2025-05-09T10:32:10.386Z","avatar_url":"https://github.com/YousefED.png","language":"TypeScript","readme":"# SyncedStore CRDT\n\n[![npm version](https://badge.fury.io/js/%40syncedstore%2Fcore.svg)](https://badge.fury.io/js/%40syncedstore%2Fcore) [![Coverage Status](https://coveralls.io/repos/github/YousefED/SyncedStore/badge.svg?branch=main)](https://coveralls.io/github/YousefED/SyncedStore?branch=main)\n\n\u003ca href=\"https://discord.gg/exFZg6X2XU\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/badge/Chat on discord%20-%237289DA.svg?\u0026style=for-the-badge\u0026logo=discord\u0026logoColor=white\"/\u003e\u003c/a\u003e\n\n\u003csmall\u003e\u003ci\u003e(This library was previously called \"Reactive-CRDT\")\u003c/i\u003e\u003c/small\u003e\n\nSyncedStore is an easy-to-use library for building collaborative applications that sync automatically. It's built on top of [Yjs](https://github.com/yjs/yjs), a proven, high performance CRDT implementation.\n\n## TL;DR\n\nCreate apps like this:\n\n[![SyncedStore CRDT screencapture](https://raw.githubusercontent.com/YousefED/syncedstore/main/syncedstore-2.gif)](https://syncedstore.org/docs/react)\n\n_[Play with this example](https://syncedstore.org/docs/react)_\n\nUsing an API as simple as this:\n\n```typescript\n// add a todo\nstore.todos.push({ completed: false, title: \"Get groceries\" });\n\n// set todo to completed\nstore.todos[0].completed = true;\n```\n\n# Documentation\n\n### [View the documentation with interactive code samples](https://syncedstore.org/docs/)\n\nYou can find the SyncedStore documentation\n[on the website](https://syncedstore.org/).\n\n- [Getting Started](https://syncedstore.org/docs/basics/installation)\n- [Working with React](https://syncedstore.org/docs/react)\n- [Working with Vue](https://syncedstore.org/docs/vue)\n- [Working with Svelte](https://syncedstore.org/docs/svelte)\n- [Collaborative text editing](https://syncedstore.org/docs/advanced/richtext)\n- [Sync providers](https://syncedstore.org/docs/sync-providers)\n\n## Examples\n\nWe have several examples [on the website](https://syncedstore.org/) ([React](https://syncedstore.org/docs/react), [Vue](https://syncedstore.org/docs/vue), [Svelte](https://syncedstore.org/docs/svelte)) as part of the documentation.\n\nIn this repository, there are also more complex examples based on TodoMVC ([examples/todo-react](https://github.com/YousefED/syncedstore/tree/main/examples/todo-react), [examples/todo-vue](https://github.com/YousefED/syncedstore/tree/main/examples/todo-vue), [examples/todo-svelte](https://github.com/YousefED/syncedstore/tree/main/examples/todo-svelte)).\n\n[![example app screencapture](https://raw.githubusercontent.com/YousefED/syncedstore/main/syncedstore.gif)](https://github.com/YousefED/syncedstore/tree/main/examples/)\n\n- Open live demo: [React](https://ze3vo.csb.app/) or [Vue](https://uie1c.csb.app/) (Of course, open multiple times to test multiplayer)\n- Edit / view on Codesandbox [React](https://codesandbox.io/s/todo-react-ze3vo) / [Vue](https://codesandbox.io/s/todo-vue-uie1c)\n\n# Motivation\n\nSyncedStore makes it easy to develop applications that:\n\n- 👨‍👩‍👧‍👦 **Are collaborative**: create multi-user and multi-device experiences without the need to handle complex conflict resolution management yourself.\n- 🚀 **Are fast**: operations are handled locally, and data synchronization with other users and devices happens quietly in the background. 0 Latency!\n- 🔗 **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.\n\nPerhaps most importantly, it makes it easy to build **decentralized applications**. This has a lot of security \u0026 privacy benefits compared to always relying on central (expensive) servers to keep track of all our data.\n\n\u003e Read more about [the benefits of Local-first software in this essay](https://www.inkandswitch.com/local-first.html)\n\nIn short, with some technological magic of so-called [CRDTs](https://crdt.tech/) (_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_.\n\n# Feedback\n\nI'd always love to hear how you're using SyncedStore. Definitely open an issue if you need help, get in touch via [Twitter](https://www.twitter.com/yousefed), or join the discussion in the [Yjs forums](https://discuss.yjs.dev/).\n\n# Credits ❤️\n\nSyncedStore builds directly on [Yjs](https://github.com/yjs/yjs) and [Reactive](https://www.github.com/yousefed/reactive). It's also inspired by and builds upon the amazing work by [MobX](https://mobx.js.org/) and [NX Observe](https://github.com/nx-js/observer-util).\n\nSyncedStore is built as part of [TypeCell](https://www.typecell.org). TypeCell is proudly sponsored by the renowned [NLNet foundation](https://nlnet.nl/foundation/) who are on a mission to support an open internet, and protect the privacy and security of internet users. Check them out!\n\n\u003ca href=\"https://nlnet.nl\"\u003e\u003cimg src=\"https://nlnet.nl/image/logos/NGIAssure_tag.svg\" alt=\"NLNet\" width=\"100\"\u003e\u003c/a\u003e\n","funding_links":[],"categories":["Server"],"sub_categories":["JavaScript"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyousefed%2FSyncedStore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyousefed%2FSyncedStore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyousefed%2FSyncedStore/lists"}