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[]
}