SignalDB

SignalDB is a local JavaScript database with a MongoDB-like interface and TypeScript support, enabling optimistic UI with signal-based reactivity across multiple frameworks. It integrates easily with libraries like Angular, Solid.js, Preact, and Vue, simplifying data management with schema-less design, in-memory storage, and fast queries.
GitHub
335
Created a year ago, last commit 17 hours ago
11 contributors
1.48k commits
Stars added on GitHub, month by month
12
1
2
3
4
5
6
7
8
9
10
11
2023
2024
Stars added on GitHub, per day, on average
Yesterday
+1
Last week
+0.9
/day
Last month
+1.0
/day
Last 12 months
+0.6
/day
npmPackage on NPM
signaldb
0.24.5
Monthly downloads on NPM
12
1
2
3
4
5
6
7
8
9
10
11
2023
2024
README

SignalDB Logo

Current Version Status Checks TypeScript Coverage License Stargazers

Getting Started | Reference

SignalDB

SignalDB is a client-side database optimized for modern web applications. It provides an optimistic UI for creating responsive and dynamic interfaces, a MongoDB-like interface for familiarity, and robust TypeScript support to ensure type safety and accelerate development. SignalDB enables versatile local data persistence with support for various storage providers and facilitates real-time updates by gathering and synchronizing data from multiple sources. Its framework-agnostic design makes it suitable for projects of any scale, offering instant data access with minimal latency, which is ideal for applications requiring fast data handling and real-time interactions. Adapters are available for popular reactive libraries, including Angular, React, Solid, Svelte and Vue.js.

Installation

  $ npm install @signaldb/core

Usage

import { Collection } from '@signaldb/core'

const Posts = new Collection()
const postId = Posts.insert({ title: 'Foo', text: 'Lorem ipsum …' })

Posts.updateOne({ id: postId }, { // updates the post
  $set: {
    title: 'New title',
  }
})

Posts.removeOne({ id: postId }) // removes the post

const cursor = collection.find({})

// returns an array with all documents in the collection
// reruns automatically in a reactive context
console.log(cursor.fetch())

See the documentation for more information.

License

Licensed under MIT license. Copyright (c) 2024 Max Nowack

Contributions

Contributions are welcome. Please open issues and/or file Pull Requests. See Contributing.md to get started.

Troubleshooting

If you encounter any issues, there are several ways to get support.