Skip to content
Docs

Your database already has an API.
You just haven’t turned it on.

BifrostQL reads your database schema and builds a complete GraphQL API. Queries, mutations, filtering, joins, pagination. No code generation. No mapping files. One connection string.

DatabaseBifrostQLGraphQL API

// Program.cs -- that's the entire API
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddBifrostQL(o => o.BindStandardConfig(builder.Configuration));
var app = builder.Build();
app.UseBifrostQL();
await app.RunAsync();
Get Started

Schema-driven

Add a table or column, restart, and the GraphQL field appears with the correct type. The database is the source of truth.

Relationship fields

Foreign keys, matching key names, child collections, and many-to-many relationships become nested GraphQL fields automatically.

Full mutations

Insert, update, upsert, delete, and batch operations are generated from primary key metadata.

Tenant-safe by default

Automatic WHERE clause injection per query. With tenant isolation enabled, queries physically cannot return another tenant’s data.

Four databases, one API

SQL Server, PostgreSQL, MySQL, and SQLite share the same GraphQL surface. A dialect layer handles identifiers, pagination, concat, and pivots per engine.

Extend without forking

Filter transformers, mutation transformers, before-commit veto hooks, and async validators plug into the pipeline with one line. Built-in modules auto-register from metadata.

React client included

Typed hooks for queries, mutations, infinite scroll, and subscriptions — plus a drop-in <Editor> that builds a full admin UI from your schema.

Desktop navigator

Point bifrostui at any database for a GraphQL playground, an Access-style visual query builder, and an editable data grid — zero setup.