{"_id":"@andrictham/syncedstore-core","name":"@andrictham/syncedstore-core","dist-tags":{"latest":"0.6.1-alpha.0"},"versions":{"0.6.1-alpha.0":{"name":"@andrictham/syncedstore-core","homepage":"https://syncedstore.org","description":"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.","keywords":["reactive","crdt","yjs","react","sync","automerge","collaboration","collaborative","mobx","vue","vuejs","observable","operational transforms","conflict","offline","shared editing"],"version":"0.6.1-alpha.0","private":false,"main":"dist/syncedstore.js","module":"dist/syncedstore.module.js","umd:main":"dist/syncedstore.umd.js","exports":{"types":"./types/index.d.ts","require":"./dist/syncedstore.js","default":"./dist/syncedstore.modern.mjs"},"source":"src/index.ts","types":"types/index.d.ts","license":"MIT","dependencies":{"@reactivedata/reactive":"^0.2.0","@syncedstore/yjs-reactive-bindings":"^0.6.0"},"peerDependencies":{"yjs":"^13.5.13"},"devDependencies":{"@types/eslint":"6.8.0","@vue/reactivity":"^3.2.21","microbundle":"^0.15.1","rimraf":"^3.0.2"},"scripts":{"test":"echo \"Run tests from root\" && exit 1","clean":"rimraf dist && rimraf types","build":"npm run clean && microbundle build --raw --no-compress --tsconfig tsconfig.build.json","watch":"microbundle watch"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"851b08fe76443a81c67a23766161b585f05f871b","_id":"@andrictham/syncedstore-core@0.6.1-alpha.0","_nodeVersion":"16.20.2","_npmVersion":"lerna/5.6.2/node@v16.20.2+x64 (darwin)","dist":{"integrity":"sha512-igllK0SSd1TmcrwyiNkMIHbtb214eKdB34rXdRSZsnVnOv4fUiN42gMSHxR+xvuH6wqFyBMMy7zQLHg4VFtc5g==","shasum":"e00241b5498279f99cc7416c860a1b2551dc7544","tarball":"https://registry.npmjs.org/@andrictham/syncedstore-core/-/syncedstore-core-0.6.1-alpha.0.tgz","fileCount":28,"unpackedSize":297088,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMYtZ8jMn+n1QweRgq6VcNvggj+oq66xtYFWUFezdl2AiEA1bleXQzXathYanFvT0O3XahWHY9DCnXv1A8iFUCICWw="}]},"_npmUser":{"name":"andrictham","email":"andrictham@gmail.com"},"directories":{},"maintainers":[{"name":"andrictham","email":"andrictham@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/syncedstore-core_0.6.1-alpha.0_1714463800450_0.9504968524341557"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-30T07:56:40.323Z","0.6.1-alpha.0":"2024-04-30T07:56:40.660Z","modified":"2024-04-30T07:56:40.945Z"},"maintainers":[{"name":"andrictham","email":"andrictham@gmail.com"}],"description":"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.","homepage":"https://syncedstore.org","keywords":["reactive","crdt","yjs","react","sync","automerge","collaboration","collaborative","mobx","vue","vuejs","observable","operational transforms","conflict","offline","shared editing"],"license":"MIT","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<a href=\"https://discord.gg/exFZg6X2XU\"><img alt=\"Discord\" src=\"https://img.shields.io/badge/Chat on discord%20-%237289DA.svg?&style=for-the-badge&logo=discord&logoColor=white\"/></a>\n\n<small><i>(This library was previously called \"Reactive-CRDT\")</i></small>\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 & privacy benefits compared to always relying on central (expensive) servers to keep track of all our data.\n\n> 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<a href=\"https://nlnet.nl\"><img src=\"https://nlnet.nl/image/logos/NGIAssure_tag.svg\" alt=\"NLNet\" width=\"100\"></a>\n","readmeFilename":"README.md"}