Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/maxnowack/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.
https://github.com/maxnowack/signaldb

client client-database database hacktoberfest live-updates local-database meteor mongodb offline-first optimistic-ui reactive reactive-programming reactivity real-time replication signals synchronization tracker typescript

Last synced: 1 day ago
JSON representation

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.

Awesome Lists containing this project

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](https://signaldb.js.org/guides/angular/), [React](https://signaldb.js.org/guides/react/), [Solid](https://signaldb.js.org/guides/solid-js/), [Svelte](https://signaldb.js.org/guides/svelte/) and [Vue.js](https://signaldb.js.org/guides/vue/).

## Installation

````
$ npm install @signaldb/core
````

## Usage

```js
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](https://signaldb.js.org/) 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](https://github.com/maxnowack/signaldb/blob/main/CONTRIBUTING.md) to get started.

## Troubleshooting

If you encounter any issues, there are several ways to get support.
- Join our [Discord server](https://discord.gg/qMvXKXxBTp).
- [Start a discussion](https://github.com/maxnowack/signaldb/discussions/new/choose)
- [Open an issue](https://github.com/maxnowack/signaldb/issues/new)