Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pubkey/rxdb
A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/
https://github.com/pubkey/rxdb
angular browser-database couchdb crdt database firebase graphql indexeddb ionic local-first localstorage nodejs nosql pouchdb react-native realtime realtime-database rxdb rxjs sqlite
Last synced: 6 days ago
JSON representation
A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/
- Host: GitHub
- URL: https://github.com/pubkey/rxdb
- Owner: pubkey
- License: apache-2.0
- Created: 2016-12-02T19:34:42.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-12-30T12:06:46.000Z (13 days ago)
- Last Synced: 2024-12-30T12:28:41.736Z (13 days ago)
- Topics: angular, browser-database, couchdb, crdt, database, firebase, graphql, indexeddb, ionic, local-first, localstorage, nodejs, nosql, pouchdb, react-native, realtime, realtime-database, rxdb, rxjs, sqlite
- Language: TypeScript
- Homepage: https://rxdb.info/
- Size: 333 MB
- Stars: 21,742
- Watchers: 208
- Forks: 1,070
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-react-native - RxDB ★12797 - A realtime Database for JavaScript Applications. (Components / Storage)
- awesome-react - rxdb - A fast, offline-first, reactive database for JavaScript Applications (**Awesome React** [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) / React)
- offline-first - rxdb
- awesome-node-esm - rxdb - a realtime Database for JavaScript Applications. (Packages / Databases)
- Shopify-Guide - RxDB - database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps and NodeJs. (GraphQL Tool, Libraries, and Frameworks)
- awesome-list - rxdb
- TensorFlow-Guide - RxDB - database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps and NodeJs. (JavaScript Tools, Libraries, and Frameworks)
- macOS-iOS-iPadOS-Guide - RxDB - database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps and NodeJs. (React Tools and Frameworks / Objective-C Tools, Libraries, and Frameworks)
- Developer-Handbook - RxDB - database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps and NodeJs. (Tools / Mesh networks)
- awesome-electron - RxDB - A realtime NoSQL database. (Tools / For Electron)
- awesome-bookmarks - **rxdb**
- awesome-json - RxDB - Event-driven JSON-Database with JSON-Schema, mango-Query and CouchDB-sync. (Javascript) (Databases)
- awesome - pubkey/rxdb - A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/ (TypeScript)
- awesome - pubkey/rxdb - A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/ (TypeScript)
- awesome-repositories - pubkey/rxdb
- awesome-luooooob - pubkey/rxdb - A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/ (TypeScript)
- awesome - rxdb - :computer: 🔄 :iphone: A realtime Database for JavaScript Applications (TypeScript)
- my-awesome-list - rxdb
- awesome-electron - RxDB - A client side, offline-first, reactive database for JavaScript Applications. ![](https://img.shields.io/github/stars/pubkey/rxdb.svg?style=social&label=Star) (Library / Database)
- awesome-github-star - rxdb - first, reactive Database for JavaScript Applications https://rxdb.info/ | pubkey | 19686 | (TypeScript)
- awesome-faker - rxdb - A fast, local first, reactive Database for JavaScript Applications. (Projects using `@faker-js/faker`)
- awesome-react-native - rxdb - 🔄 A client side, offline-first, reactive database for JavaScript Applications. ![](https://img.shields.io/github/stars/pubkey/rxdb.svg?style=social&label=Star) (Components / Storage / Database)
- system-architecture-awesome - rxdb - Client Side Database for Browsers, NodeJS, electron, cordova, react-native and every other javascript-runtime (Client Side)
- StarryDivineSky - pubkey/rxdb
- awesome-react-cn - RxDB - A realtime Database for JavaScript Applications (Uncategorized / Uncategorized)
- awesome-web-development - rxdb: A **realtime** Database for the Web
- my-awesome-list - rxdb - :computer: :iphone: A realtime Database for the Web (Programming Languages / JavaScript)
- best-of-react - GitHub - 2% open · ⏱️ 06.06.2024): (State Management)
- awesome-react-native - RxDB ★12797 - A realtime Database for JavaScript Applications. (Components / Storage)
- jimsghstars - pubkey/rxdb - A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/ (TypeScript)
- awesome-starred - pubkey/rxdb - A fast, offline-first, reactive Database for JavaScript Applications https://rxdb.info/ (angular)
- awesome-react - RxDB - A realtime Database for JavaScript Applications ` 📝 3 days ago` (React [🔝](#readme))
- JavaScript-Guide - RxDB - database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps and NodeJs. (React Tools and Frameworks)
- awesome-star-libs - pubkey / rxdb - Apps and NodeJs。Reactive意味着您不仅可以查询当前状态,还可以订阅所有状态更改,例如查询结果甚至是文档的单个字段。这对于始终向用户显示实时状态的基于UI的应用程序非常有用。由于RxDB基于辉煌的PouchDB,因此它支持CouchDB复制协议,该协议允许您以简单方便的方式在多个客户端和服务器之间复制数据。 (目录)
- awesome-github-repos - pubkey/rxdb - A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/ (TypeScript)
- awesome-learning-resources - RxDB - A realtime Database for JavaScript Applications (Uncategorized / Uncategorized)
- VSCode-Guide - RxDB - database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps and NodeJs. (Electron Tools, Libraries, and Frameworks / JavaScript Libraries for Machine Learning)
- awesome-javascript - rxdb - first, reactive database for JavaScript Applications (Packages)
- awesome-javascript - rxdb - first, reactive database for JavaScript Applications (Packages)
README
| Announcement |
| :--: |
| Version **16.0.0** is now released, read the [CHANGELOG](https://rxdb.info/releases/16.0.0.html) |
A fast, local-first, reactive Database for JavaScript Applications
What is RxDB?
RxDB (short for Reactive Database) is a local-first, NoSQL-database for JavaScript Applications like Websites, hybrid Apps, Electron-Apps, Progressive Web Apps, Deno and Node.js.
Reactive means that you can not only query the current state, but subscribe to all state changes like the result of a query or even a single field of a document.
This is great for UI-based realtime applications in a way that makes it easy to develop and also has great performance benefits but can also be used to create fast backends in Node.js.
RxDB provides an easy to implement protocol for realtime replication with your existing infrastructure or one of the plugins for HTTP, GraphQL, CouchDB, Websocket, WebRTC, Supabase, Firestore, NATS.
RxDB is based on a storage interface that enables you to swap out the underlying storage engine. This increases code reuse because you can use the same database code for different JavaScript environments by just switching out the storage settings.Use the [quickstart](https://rxdb.info/quickstart.html), read the [documentation](https://rxdb.info/install.html) or explore the [example projects](https://github.com/pubkey/rxdb/tree/master/examples).
Used by manyRxDB is a proven technology used by [thousands of developers](https://github.com/pubkey/rxdb/network/dependents) worldwide. With its flexibility, RxDB is used in a diverse range of apps and services.
Multiplayer realtime applications
![realtime.gif](docs-src/static/files/animations/realtime.gif)
Replicate with your existing infrastructureRxDB provides an easy to implement, battle-tested replication protocol for realtime sync with your existing infrastructure.
You do not have to use a specific cloud or backend database. The protocol works by implementing three simple HTTP endpoints.
There are also production-ready plugins to easily replicate with GraphQL, CouchDB, Websocket, WebRTC (P2P),Supabase, Firestore or NATS.
Flexible storage layerRxDB is based on a [storage interface](https://rxdb.info/rx-storage.html) that enables you to swap out the underlying storage engine. This increases **code reuse** because the same database code can be used in different JavaScript environments by just switching out the storage settings.
You can use RxDB on top of [IndexedDB](https://rxdb.info/rx-storage-indexeddb.html), [OPFS](https://rxdb.info/rx-storage-opfs.html), [LokiJS](https://rxdb.info/rx-storage-lokijs.html), [Dexie.js](https://rxdb.info/rx-storage-dexie.html), [in-memory](https://rxdb.info/rx-storage-memory.html), [SQLite](https://rxdb.info/rx-storage-sqlite.html), in a [WebWorker](https://rxdb.info/rx-storage-worker.html) thread and even on top of [FoundationDB](https://rxdb.info/rx-storage-foundationdb.html) and [DenoKV](https://rxdb.info/rx-storage-denokv.html).
No matter what kind of runtime you have, as long as it runs JavaScript, it can run RxDB:
Browsers
Node.js
React Native
Capacitor
NativeScript
Flutter
or as an
Electron Database
All the features that you needSince its beginning in 2018, RxDB has gained a huge set of features and plugins which makes it a flexible full solution regardless of which type of application you are building. Every feature that you need now or might need in the future is already there.
Logging
Attachments
ORM
Conflict Handling
Middleware
Signals
State
Backup
Replication
Server
Storages
Local Documents
Schema Validation
Compression
Migration
Encryption
CRDT
Population
Quick start#### Install
```sh
npm install rxdb rxjs --save
```#### Store data
```javascript
import {
createRxDatabase
} from 'rxdb/plugins/core';/**
* For browsers, we use the dexie.js based storage
* which stores data in IndexedDB in the browser.
* In other JavaScript runtimes, we can use different storages:
* @link https://rxdb.info/rx-storage.html
*/
import { getRxStorageDexie } from 'rxdb/plugins/storage-dexie';// create a database
const db = await createRxDatabase({
name: 'heroesdb', // the name of the database
storage: getRxStorageDexie()
});// add collections
await db.addCollections({
heroes: {
schema: mySchema
}
});// insert a document
await db.heroes.insert({
name: 'Bob',
healthpoints: 100
});
```#### Query data once
```javascript
const aliveHeroes = await db.heroes.find({
selector: {
healthpoints: {
$gt: 0
}
}
}).exec(); // the exec() returns the result once
```#### Observe a Query
```javascript
await db.heroes.find({
selector: {
healthpoints: {
$gt: 0
}
}
})
.$ // the $ returns an observable that emits each time the result set of the query changes
.subscribe(aliveHeroes => console.dir(aliveHeroes));
```
Get startedGet started now by [reading the docs](https://rxdb.info/quickstart.html) or exploring the [example-projects](./examples).
Support and Contribute- **Leave a Star ☝️**
- [Check out how you can contribute to this project](https://rxdb.info/contribution.html).
- [Read this when you have found a bug](./orga/bug-checklist.md)
- [Buy access to the premium plugins](https://rxdb.info/premium)
- [Join us at discord to get help](https://rxdb.info/chat)
- [Follow us at LinkedIn](https://www.linkedin.com/company/rxdb/)
- [Give Feedback (anonymous)](https://forms.gle/vGaZB7zrub1hgqDk8)#### More content
[Angular Database](https://rxdb.info/articles/angular-database.html), [Frontend Database](https://rxdb.info/articles/frontend-database.html), [localStorage](https://rxdb.info/articles/localstorage.html), [React Database](https://rxdb.info/articles/react-database.html), [Browser Database](https://rxdb.info/articles/browser-database.html), [React Native Database](https://rxdb.info/react-native-database.html), [PWA Database](https://rxdb.info/articles/progressive-web-app-database.html), [In-memory NoSQL database](https://rxdb.info/articles/in-memory-nosql-database.html), [JSON database](https://rxdb.info/articles/json-database.html)