All Projects → local-first-web → state

local-first-web / state

Licence: other
A Redux-based state container for local-first software, offering seamless synchronization using Automerge CRDTs. (Formerly known as 🐟 Cevitxe).

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to state

Kinto.js
An Offline-First JavaScript Client for Kinto.
Stars: ✭ 268 (+112.7%)
Mutual labels:  synchronization, offline, offline-first
Ron Cxx
RON2.1 C++ implementation
Stars: ✭ 33 (-73.81%)
Mutual labels:  synchronization, crdt
Offline First
🔌 Everything you need to know to create offline-first web apps.
Stars: ✭ 2,792 (+2115.87%)
Mutual labels:  offline, offline-first
Remotestorage.js
⬡ JavaScript client library for integrating remoteStorage in apps
Stars: ✭ 2,155 (+1610.32%)
Mutual labels:  synchronization, offline-first
Ember Service Worker
A pluggable approach to Service Workers for Ember.js
Stars: ✭ 227 (+80.16%)
Mutual labels:  offline, offline-first
Jfa Pwa Toolkit
⚡️ PWA Features to Any Website (very Fast & Easy)
Stars: ✭ 245 (+94.44%)
Mutual labels:  offline, offline-first
Multiotp
multiOTP open source strong two factor authentication PHP library, OATH certified, with TOTP, HOTP, Mobile-OTP, YubiKey, SMS, QRcode provisioning, etc.
Stars: ✭ 173 (+37.3%)
Mutual labels:  synchronization, offline
Gittar
🎸 Download and/or Extract git repositories (GitHub, GitLab, BitBucket). Cross-platform and Offline-first!
Stars: ✭ 87 (-30.95%)
Mutual labels:  offline, offline-first
harika
Offline-, mobile-first graph note-taking app focused on performance with the knowledgebase of any scale
Stars: ✭ 111 (-11.9%)
Mutual labels:  offline, local-first
SyncedStore
SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.
Stars: ✭ 1,053 (+735.71%)
Mutual labels:  offline-first, crdt
launchlet
Make the web yours.
Stars: ✭ 34 (-73.02%)
Mutual labels:  offline-first, local-first
Apollo Offline
An offline toolkit for the Apollo client
Stars: ✭ 186 (+47.62%)
Mutual labels:  offline, offline-first
Wora
Write Once, Render Anywhere. typescript libraries: cache-persist, apollo-offline, relay-offline, offline-first, apollo-cache, relay-store, netinfo, detect-network
Stars: ✭ 138 (+9.52%)
Mutual labels:  offline, offline-first
Wq.app
💻📱 wq's app library: a JavaScript framework powering offline-first web & native apps for geospatial data collection, mobile surveys, and citizen science. Powered by Redux, React, Material UI and Mapbox GL.
Stars: ✭ 99 (-21.43%)
Mutual labels:  offline, offline-first
HelpOff
Providing help via offline system : Runner-Up at NMIMS Hackathon 2018
Stars: ✭ 20 (-84.13%)
Mutual labels:  offline, offline-first
Cmissync
Synchronize content between a CMIS repository and your desktop. Like Dropbox for Enterprise Content Management!
Stars: ✭ 153 (+21.43%)
Mutual labels:  synchronization, offline
Storage Based Queue
Javascript queue library with persistent storage based queue mechanism for the browsers environments. Specially designed for offline.
Stars: ✭ 33 (-73.81%)
Mutual labels:  offline, offline-first
Tris Webpack Boilerplate
A Webpack boilerplate for static websites that has all the necessary modern tools and optimizations built-in. Score a perfect 10/10 on performance.
Stars: ✭ 1,016 (+706.35%)
Mutual labels:  offline, offline-first
joybox
A pinboard for audiovisual media.
Stars: ✭ 21 (-83.33%)
Mutual labels:  offline-first, local-first
angular-http-cache
Speed up your remote requests by automatically caching them on client and add support for offline navigation.
Stars: ✭ 25 (-80.16%)
Mutual labels:  offline, offline-first

@localfirst/state logo

@localfirst/state is an automatically replicated Redux store that gives your app offline capabilities and secure peer-to-peer synchronization superpowers.

🚧 Work in progress

Why

Distributed, offline-first technologies are promising for a lot of reasons, but they're unfamiliar to most web application developers. This library provides offline storage and peer-to-peer synchronization capabilities, and exposes them via a familiar Redux store that can be used in a vanilla JS, React, or Electron application.

🡒 Read more

What

This library provides two services:

  • Data replication & synchronization, using the Automerge library
  • Persistence to a local or remote data store. You can use the provided adapters for IndexedDb or MongoDb, or provide your own.

🡒 Read more

How

Example apps

Two demo React applications are included:

todo

An implementation of TodoMVC

To run: yarn dev:todo:start

grid

A simple table editor

To run: yarn dev:grid:start

Getting started

yarn add @localfirst/state
import { StoreManager } from '@localfirst/state'
import { Provider } from 'react-redux'

const storeManager = new StoreManager({
  // Pass your reducers
  proxyReducer,

  // Pass an initial state, just like you would for Redux
  initialState: {
    todoList: [],
    todoMap: {},
    filter: ALL,
  },
})

export const Index = () => {
  // Obtain a Redux store
  const store = storeManager.createStore(discoveryKey)
  return (
    // Pass the store to your app
    <Provider store={store}>
      <App />
    </Provider>
  )
}

🡒 More on how to use @localfirst/state in your app

Limitations

This library requires that the entire repository be present on each peer's machine. That means that it is limited to datasets that can fit comfortably within the disk space on a single computer. In 2019, that means something on the order of 1-10 GB.

Further reading

Alternatives

All of these projects are working in similar problem space, in JavaScript. All work in Node.js and the browser unless otherwise noted.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].