└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Offline-First 2 | 3 | A list of projects in the offline-first storage, sync & realtime collaboration/multiplayer space. 4 | 5 | ## Databases 6 | 7 | 1. [RxDB](https://github.com/pubkey/rxdb) 8 | 2. [WatermelonDB](https://github.com/Nozbe/WatermelonDB) 9 | 3. [Tuple](https://github.com/ccorcos/tuple-database) 10 | 4. [Datascript](https://github.com/tonsky/datascript) 11 | 5. [Gun](https://github.com/amark/gun) 12 | 6. [TinyBase](https://tinybase.org/) 13 | 7. [SignalDB](https://signaldb.js.org/) 14 | 8. [Fireproof](https://use-fireproof.com/) 15 | 9. [Vlcn](https://github.com/vlcn-io/vlcn-orm) – ORM & P2P Syncing library to build offline-first apps. 16 | 10. [Kikko](https://github.com/kikko-land/kikko) – Reactive query layer on top of SQLite with support for web, desktop (Electron/Tauri) and mobile (React Native/Capacitor) 17 | 18 | ## Frameworks 19 | 1. [Evolu](https://github.com/evoluhq/evolu) 20 | 2. [Verdant](https://github.com/a-type/verdant) 21 | 3. [Liveblocks](https://liveblocks.io) 22 | 4. [Replicache](https://replicache.dev/) 23 | 5. [SyncedStore](https://github.com/yousefed/SyncedStore) 24 | 25 | ## CRDT Implementations 26 | 27 | ### JavaScript 28 | 1. [Tinymerge](https://github.com/siliconjungle/tiny-merge) 29 | 2. [Yjs](https://github.com/yjs/yjs) 30 | 3. [Automerge](https://github.com/automerge/automerge) 31 | 4. [Loro](https://github.com/loro-dev/loro) 32 | 33 | ### Rust 34 | 1. [CR SQlite](https://github.com/vlcn-io/cr-sqlite) - LWW register for SQLite 35 | 2. [Diamond Types (Rust)](https://github.com/josephg/diamond-types) 36 | 3. [y-crdt - Rust port of Y.js](https://github.com/y-crdt/y-crdt) 37 | 4. [automerge-rs](https://github.com/automerge/automerge-rs) 38 | 5. [Loro](https://github.com/loro-dev/loro) 39 | 40 | 41 | ## Startups 42 | 43 | 1. [InstantDB](https://instantdb.com) – Firebase alternative with a Graph-based client DB at the core 44 | 3. [ElectricSQL](https://electric-sql.com/) 45 | 4. [Homebase](https://homebase.io/) 46 | 5. [Convex](https://www.convex.dev/) 47 | 48 | ## Miscellaneous 49 | 50 | 1. [Redux Offline](https://github.com/redux-offline/redux-offline) – Persistence layer for Redux stores. 51 | 2. [localForage](https://github.com/localForage/localForage) 52 | 53 | ## Resources 54 | 55 | ### Writeups 56 | 57 | 1. [Local-first software – You own your data, in spite of the cloud](https://www.inkandswitch.com/local-first/) - [Ink and Switch](https://www.inkandswitch.com) 58 | 2. [Building a BFT JSON CRDT](https://jzhao.xyz/posts/bft-json-crdt/) 59 | 3. [Riffle - Building data-centric apps with a reactive relational database](https://riffle.systems/essays/prelude/) 60 | 4. [Realtime editing of ordered sequences](https://www.figma.com/blog/realtime-editing-of-ordered-sequences/) 61 | 5. [How Figma’s multiplayer technology works](https://www.figma.com/blog/how-figmas-multiplayer-technology-works/) 62 | 6. [An introduction to state-based CRDTs]( 63 | 64 | ### Videos 65 | 66 | 1. [CRDTs for Mortals](https://www.youtube.com/watch?v=DEcwa68f-jY) - James Long 67 | 2. [Conflict-Free Replicated Data Types (CRDT) for Distributed JavaScript Apps.](https://www.youtube.com/watch?v=M8-WFTjZoA0) 68 | 3. [A CRDT Primer: Defanging Order Theory](https://www.youtube.com/watch?v=OOlnp2bZVRs) - John Mumm 69 | 4. [Building a collaborative text editor with WebRTC and CRDTs](https://www.youtube.com/watch?v=hy0ePbpna5Y) 70 | 6. [​Riffle - Reactive Relational State (Local-First Meetup Berlin #1)](https://www.youtube.com/watch?v=zjl7CpG9h3w) - Geoffrey Litt 71 | 7. [CRDTs for Non Academics](https://www.youtube.com/watch?v=vBU70EjwGfw) 72 | 8. [Automerge: Making servers optional for real-time collaboration](https://www.youtube.com/watch?v=PHz17gwiOc8) - Martin Kleppmann 73 | 9. [Linear's realtime sync system](https://www.youtube.com/watch?v=WxK11RsLqp4&t=2169s) - Tuomas Artman 74 | 10. [Scaling the Linear Sync Engine](https://linear.app/blog/scaling-the-linear-sync-engine) 75 | 11. [Metamuse Episode 56 - Sync]([url](https://museapp.com/podcast/56-sync/)https://museapp.com/podcast/56-sync/) 76 | 77 | ### Podcasts 78 | 1. [Localfirst.fm](https://localfirst.fm/) 79 | --------------------------------------------------------------------------------