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.
// Program.cs -- that's the entire APIvar builder = WebApplication.CreateBuilder(args);builder.Services.AddBifrostQL(o => o.BindStandardConfig(builder.Configuration));var app = builder.Build();app.UseBifrostQL();await app.RunAsync();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.