npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

signaldb

v0.9.0

Published

SignalDB is a client-side database that provides a simple MongoDB-like interface to the data with first-class typescript support to achieve an optimistic UI. Data persistence can be achieved by using storage providers that store the data through a JSON in

Downloads

567

Readme

SignalDB: Client-Side JavaScript Database with TypeScript Support and Reactive Interfaces

SignalDB is an innovative client-side database designed for modern web applications. It provides a powerful MongoDB-like interface that simplifies data handling with first-class TypeScript support, enhancing type safety and development experience. This JavaScript database is tailored for creating an optimistic UI, allowing developers to build responsive and dynamic user interfaces with ease.

Data persistence is a core feature of SignalDB. It enables the storage of data through a JSON interface in various storage providers, including the widely-used localStorage. This flexibility allows you to choose the most suitable storage mechanism for your application, whether you're aiming for temporary session storage or more permanent data retention.

SignalDB excels in situations where quick and efficient data handling is crucial. The use of a client-side approach ensures that data is readily available without the latency associated with server-side databases. This instant access to data is particularly beneficial for applications requiring high performance and real-time interactions.

Furthermore, SignalDB's architecture is designed to be lightweight and unobtrusive. It doesn't lock you into a specific framework, making it a versatile choice for a wide range of JavaScript applications. Whether you're working on a small project or a large-scale application, SignalDB's intuitive API and flexible design make it an ideal choice for developers looking to enhance their application's data management capabilities.

Installation

  $ npm install signaldb

Usage

import { Collection } from 'signaldb'

const posts = new Collection()
const postId = posts.insert({ title: 'Foo', text: 'Lorem ipsum …' })
const cursor = collection.find({})
console.log(cursor.fetch()) // returns an array with all documents in the collection

Reactivity

In theory, every signal library is supported. SignalDB currently have pre-build reactivity adapters for these libraries:

  • @preact/signals-core
  • @reactively/core
  • Angular
  • Maverick-js Signals
  • Meteor Tracker
  • MobX
  • oby
  • S.js
  • sinuous
  • Solid.js
  • usignal
  • Vue.js
  • and more to come!

More information in the reactivity section of the documentation.

import { effect } from '@preact/signals-core'
// OR
import { effect } from '@angular/core'
// OR
import { autorun as effect } from 'mobx'
// OR
import { createEffect as effect } from 'solid-js'
// OR
import { watchEffect as effect } from 'vue'
// ...

const posts = new Collection({
  reactivity: /* ... */ // see https://signaldb.js.org/reactivity/ for reactivity adapters for your favorite library,
})

effect(() => { // will be executed everytime the query result changes
  const cursor = posts.find({ author: 'John' })
  console.log(cursor.count())
})

Please also take a look at the documentation

Architecture

Reactivity

SignalDB harnesses the power of signal-based reactivity to offer a dynamic and responsive user experience. Our architecture integrates seamlessly with various signal libraries, ensuring compatibility and flexibility across different JavaScript frameworks. Whether you're using Angular, React, Vue.js, or others, SignalDB adapts to your preferred environment, enhancing the reactivity of your web applications.

Collections & Queries

At the heart of SignalDB lies its advanced handling of collections and queries. Our in-memory data storage approach ensures blazing-fast query performance, perfect for applications requiring real-time data manipulation and retrieval. This setup allows for a synchronous API, eliminating the complexity of asynchronous operations and making data handling straightforward and efficient.

Data Persistance

SignalDB's data persistence layer is designed for scalability and flexibility. It offers various strategies for persisting data, from simple localStorage implementations to more complex external systems. This versatility allows for customization based on your application's needs, ensuring data is stored efficiently and securely. Our architecture supports the evolution of your application, providing a solid foundation for growth and expansion.

Replication

Looking ahead, SignalDB plans to implement a cutting-edge data replication engine, drawing inspiration from established protocols like the RxDB replication protocol (more info). Initially, we'll offer data replication through a persistence interface for RxDB, with further expansions to follow. Our commitment to extensibility means that we're continually evolving, adding new features and capabilities to meet the ever-changing demands of modern web development.

License

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

Contributions

Contributions are welcome. Please open issues and/or file Pull Requests.

Maintainers