FumaDB

Introduction

Introducing FumaDB, a library for library to interact with databases.

Why?

Full-stack web frameworks are getting more popular and there's a need for some libraries to interact with your database, for example:

  • Auth libraries (BetterAuth, NextAuth).
  • Headless CMS (Payload).
  • Self-hostable services, like my comment area library Fuma Comment.

The Problems We Solve

  • You cannot always trust the library: there could be bugs that introduces vulnerability to your database.
  • Versioning database schemas is difficult: some changes require shutting down the server, and the library author doesn't know if they should be marked as breaking changes.
  • Hard to integrate well into existing pipeline: you might be using different ORMs and their built-in migration pipeline.
  • Each ORM & database have many inconsistencies: library authors often need to skim through their docs and write code carefully, making sure the library works for all ORMs and databases.

FumaDB aims to solve them by:

  • Unified Querying Interface for library author to query your database, it's Prisma-like and supports relations.
  • Unified Schema for library author to design database schemas, without worrying the underlying ORM consumer uses.
  • Built-in SQL Migrator for consumers without an existing migration pipeline or ORM, it's built on Kysely but only support widely-supported (safe) operations.

Getting Started

For library authors, see our Setup guide.