Rxdb
A fast, local first, reactive Database for JavaScript Applications https://rxdb.info/
Install / Use
/learn @pubkey/RxdbREADME
Use the quickstart, read the documentation or explore the example projects.
<h2> <img height="16" width="16" src="./docs-src/static/files/icons/with-gradient/people.svg"> Used by <b style="color: #e6008d;">many</b> </h2>RxDB is a proven technology used by thousands of developers worldwide. With its flexibility, RxDB is used in a diverse range of apps and services.
<a href="https://rxdb.info/#reviews" target="_blank"> <img src="./docs-src/static/files/used-by-many.png" /> </a> <br /> (<a href="https://forms.gle/7taae27VqLXqd4sF6">add yours</a>) <h2> <img height="16" width="16" src="./docs-src/static/files/icons/with-gradient/multiplayer.svg"> Multiplayer realtime applications <img height="36" src="./docs-src/static/files/icons/with-gradient/text/made-easy.svg"> </h2>
RxDB provides an easy to implement, <b>battle-tested</b> <a href="https://rxdb.info/replication.html">Sync Engine</a> for <a href="https://rxdb.info/articles/realtime-database.html">realtime</a> replication with your existing infrastructure.<br /> 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 <a href="https://rxdb.info/replication-graphql.html">GraphQL</a>, <a href="https://rxdb.info/replication-couchdb.html">CouchDB</a>, <a href="https://rxdb.info/replication-websocket.html">Websocket</a>, <a href="https://rxdb.info/replication-webrtc.html">WebRTC (P2P)</a>, <a href="https://rxdb.info/replication-supabase.html">Supabase</a>, <a href="https://rxdb.info/replication-firestore.html">Firestore</a>, <a href="https://rxdb.info/replication-nats.html">NATS</a> or <a href="https://rxdb.info/replication-google-drive.html">Google Drive</a>.
<h2> <img height="16" width="16" src="./docs-src/static/files/icons/with-gradient/storage-layer.svg"> <b style="color: #8D2089;">Flexible</b> storage layer </h2>RxDB is based on a storage interface 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 LocalStorage, IndexedDB, OPFS, LokiJS, Dexie.js, in-memory, SQLite, in a WebWorker thread and even on top of FoundationDB and DenoKV.
No matter what kind of runtime you have, as long as it runs JavaScript, it can run RxDB:
<h4> <img height="13" src="https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.2.2/chrome/chrome_24x24.png" /> <img height="13" src="https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.2.2/firefox/firefox_24x24.png" /> <img height="13" src="https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.2.2/safari/safari_24x24.png" /> <img height="13" src="https://cdnjs.cloudflare.com/ajax/libs/browser-logos/39.2.2/edge/edge_24x24.png" /> <a href="./examples/angular">Browsers</a> <img height="13" src="docs-src/static/files/icons/nodejs.svg" /> <a href="./examples/node">Node.js</a> <img height="13" src="docs-src/static/files/icons/react.svg" /> <a href="https://rxdb.info/react-native-database.html">React Native</a> <img height="13" src="docs-src/static/files/icons/capacitor.svg" /> <a href="https://rxdb.info/capacitor-database.html">Capacitor</a> <img height="13" src="docs-src/static/files/icons/nativescript.svg" /> <a href="https://github.com/herefishyfish/rxdb-nativescript">NativeScript</a> <img height="13" src="docs-src/static/files/icons/flutter.svg" /> <a href="./examples/flutter">Flutter</a> or as an <img height="13" src="docs-src/static/files/icons/electron.svg" /> <a href="https://rxdb.info/electron-database.html">Electron Database</a> </h4> <h2> All the features that you need </h2>Since 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.
<table> <tr> <td> <a href="https://rxdb.info/logger.html">Logging</a><br> <a href="https://rxdb.info/rx-attachment.html">Attachments</a><br> <a href="https://rxdb.info/orm.html">ORM</a><br> <a href="https://rxdb.info/transactions-conflicts-revisions.html">Conflict Handling</a><br> <a href="https://rxdb.info/middleware.html">Middleware</a><br> <a href="https://rxdb.info/reactivity.html">Signals</a> </td> <td> <a href="https://rxdb.info/rx-state.html">State</a><br> <a href="https://rxdb.info/backup.html">Backup</a><br> <a href="https://rxdb.info/replication.html">Replication</a><br> <a href="https://rxdb.info/rx-server.html">Server</a><br> <a href="https://rxdb.info/rx-storage.html">Storages</a><br> <a href="https://rxdb.info/rx-local-document.html">Local Documents</a> </td> <td> <a href="https://rxdb.info/schema-validation.html">Schema Validation</a><br> <a href="https://rxdb.info/key-compression.html">Compression</a><br> <a href="https://rxdb.info/migration-schema.html">Migration</a><br> <a href="https://rxdb.info/encryption.html">Encryption</a><br> <a href="https://rxdb.info/crdt.html">CRDT</a><br> <a href="https://rxdb.info/population.html">Population</a> </td> </tr> </table> <h2> <img height="16" width="16" src="./docs-src/static/files/icons/with-gradient/rocket.svg"> Quick start </h2>Install
npm install rxdb rxjs --save
Store data
import {
createRxDatabase
} from 'rxdb/plugins/core';
/**
* For browsers, we use the localstorage based storage.
* In other JavaScript runtimes, we can use different storages:
* @link https://rxdb.info/rx-storage.html
*/
import { getRxStorageLocalstorage } from 'rxdb/plugins/storage-localstorage';
// create a database
const db = await createRxDatabase({
name: 'heroesdb', // the name of the database
storage: getRxStorageLocalstorage()
});
// add collections with a schema
await db.addCollections({
heroes: {
schema: {
version: 0,
primaryKey: 'name',
type: 'object',
properties: {
name: {
type: 'string',
maxLength: 100
},
healthpoints: {
type: 'number'
}
},
required: ['name', 'healthpoints']
}
}
});
// insert a document
await db.heroes.insert({
name: 'Bob',
healthpoints: 100
});
Query data once
const aliveHeroes = aw
Related Skills
notion
325.6kNotion API for creating and managing pages, databases, and blocks.
feishu-drive
325.6k|
things-mac
325.6kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
325.6kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
