TinyDB

Tiny, Powerful, Beautiful

Contents:

Motivation

Let's say you want to build a small project that doesn't require a bulky relational database such as Postgres or MySQL. Instead, you want to use a simple, in-memory database that will cover your needs.

That's where TinyDB comes in. TinyDB is a tiny, simple, and fast in-memory database that you can use to store and retrieve data. It has all the features of a relational database, but it designed to be as lightweight and simple as possible.

No need to install software or to set up a server. You're ready to go after installing dependencies.

Let's start

Your entry point is @TinyTable decorator, where you pass table's name.

There are tons of decorators you can use to customize your database. In the example below, you can see @Column decorators.

@TinyTable("users")
class User {
  @Column({
    type: "string",
    unique: true,
  })
  name!: string

  @Column({
    type: "date",
    allowNull: true,
  })
  birthday!: string

  @Column({
    type: "boolean",
    default: false,
    allowNull: true,
  })
  isAdmin!: boolean

  @Column({
    allowNull: true,
    type: "json",
    default: {
      theme: 'light',
      lang: 'en',
    }
  })
  settings!: Record<string, unknown>

  @Column({
    type: "array",
    allowNull: true,
    default: [],
  })
  friends!: string[]
}