SignalDB Documentation
repository·main·Indexed 20 days ago
https://github.com/maxnowack/signaldbA local-first, client-side JavaScript database optimized for modern web applications. SignalDB provides a MongoDB-like interface, optimistic UI updates via signal-based reactivity, and real-time data synchronization. It includes a core library (@signaldb/core), synchronization tools (@signaldb/sync), developer tools (@signaldb/devtools), and a wide range of persistence adapters (IndexedDB, OPFS, LocalStorage, fs) and reactivity adapters for frameworks like React, Vue, Angular, Solid.js, and Preact.
What's inside SignalDB
- SignalDB is a reactive, local-first JavaScript database designed for building fast, offline-capable applications. It uses signals to provide instant UI updates and supports real-time synchronization with various backends (REST, GraphQL, or custom APIs).
Overview of @signaldb/sync
mainThe@signaldb/syncpackage provides the synchronization implementation for SignalDB. SignalDB is a local-first JavaScript database designed for real-time synchronization. It enables optimistic UI updates by leveraging signal-based reactivity, making it compatible with various frontend frameworks. This allows developers to build applications that work offline and sync data seamlessly when connectivity is available.Overview of @signaldb/devtools
mainThe@signaldb/devtoolspackage provides developer tools specifically designed for use with SignalDB. SignalDB is a local-first JavaScript database that supports real-time synchronization and signal-based reactivity, allowing for optimistic UI updates across various frontend frameworks.Use @signaldb/oby for Oby reactivity
mainThe@signaldb/obypackage is a plugin that integrates SignalDB with Oby, a reactive state management library. This allows you to leverage SignalDB's local-first, real-time sync capabilities within an Oby-driven reactive environment, enabling optimistic UI updates across your application.Explore SignalDB package structure and exports
mainSignalDB is a modular ecosystem composed of several specialized packages. To use SignalDB, you will interact with one or more of the following categories of packages:
Core Packages
@signaldb/core: Contains the fundamental building blocks likeCollection,Cursor, and adapter factory functions.@signaldb/sync: Provides synchronization capabilities via theSyncManager.
Integrations
@signaldb/react: Provides React-specific hooks for reactivity.
Persistence Adapters
Used to store data in different environments:
@signaldb/fs: File system storage.@signaldb/localstorage: Browser LocalStorage.@signaldb/opfs: Origin Private File System.
Reactivity Adapters
Used to bridge SignalDB's reactivity with specific UI frameworks or state management libraries (e.g.,
@signaldb/angular,@signaldb/mobx,@signaldb/solid,@signaldb/vue, etc.).Use @signaldb/solid for Solid.js reactivity
mainThe@signaldb/solidpackage is a reactivity adapter that integrates SignalDB with Solid.js. It allows you to use SignalDB's local-first, real-time synchronized data within the Solid.js reactivity system, enabling optimistic UI updates and fine-grained reactivity across your Solid components.Use @signaldb/vue for Vue.js integration
mainThe@signaldb/vuepackage is a plugin that enables signal-based reactivity for SignalDB within Vue.js applications. It allows you to bridge SignalDB's local-first, real-time synchronized data with Vue's reactivity system, facilitating optimistic UI updates and seamless data binding.Use @signaldb/localstorage for persistence
mainThe@signaldb/localstoragepackage is a persistence adapter for SignalDB that allows you to store your database state in the browser'slocalStorage. This is useful for simple, client-side persistence in web applications where the data size is relatively small and fits within thelocalStoragelimits.Benefits of using SignalDB for real-time data
mainSignalDB is optimized for real-time web applications through several core architectural advantages:
- Low Latency: Operates primarily in-memory for fast data access and manipulation, making it suitable for high-frequency updates like financial trading or analytics.
- Real-Time Synchronization: Ensures instant data updates across all connected clients, maintaining consistency and reliability for collaborative tools and dashboards.
- Ease of Integration: It is framework agnostic and provides reactivity adapters to automatically connect the database to your UI without manual state management.
- Scalability: Features a lightweight architecture designed for horizontal scaling as user bases or data volumes grow.
- Developer Experience: Uses a schema-less design and a MongoDB-like query language, reducing the complexity of data management compared to traditional relational databases.
Use @signaldb/angular for Angular reactivity
mainThe@signaldb/angularpackage is a plugin for SignalDB designed specifically for Angular applications. It enables SignalDB's local-first, real-time synchronized database to work seamlessly with Angular Signals, allowing you to build optimistic UIs that react automatically to database changes using Angular's native reactivity model.Use @signaldb/usignal for signal-based reactivity
main@signaldb/usignalis a plugin for SignalDB that integrates with µsignal. It enables signal-based reactivity within SignalDB, allowing you to build optimistic UIs that react to database changes using signals across various JavaScript frameworks.Use @signaldb/indexeddb for IndexedDB persistence
mainThe@signaldb/indexeddbpackage is a persistence adapter for SignalDB that allows you to store your database state in the browser'sIndexedDB. This enables long-term local storage that persists across page reloads in web environments.