Skip to content

Getting Started

Excalibase GraphQL generates a full GraphQL API from your database schema — no code required.

Choose Your Backend

PostgreSQL — full feature set (http://localhost:10000/{projectId}/graphql):

docker-compose up -d
# Starts: postgres + nats + excalibase-watcher + excalibase-graphql + graphiql
JSON/JSONB, arrays, network types, composite types, domain types, views, materialized views, tracked functions, real-time subscriptions (via excalibase-watcher + NATS), Row-Level Security.

MySQL — (http://localhost:10001/{projectId}/graphql):

docker-compose -f docker-compose.mysql.yml up -d
CRUD, ENUM/JSON types, views, FK relationships.

Key Concepts

Everything is auto-generated

Excalibase reads your database schema at startup and builds the GraphQL schema automatically. Tables become query/mutation types, foreign keys become relationship fields, tracked functions become query or mutation fields, views become read-only query fields.

Include FK columns for relationships

When traversing a relationship, you must include the foreign key column in your selection — the resolver reads that value to fetch the related row:

{
  hanaOrders {
    order_id
    customer_id     # ← required for relationship to work
    hanaCustomer {
      first_name
      last_name
    }
  }
}

Functions return table rows

A tracked function returns rows of its return table, shaped like a read of that table. Procedures are not exposed. See Functions.

orderBy syntax differs between backends

  • PostgreSQL: enum value — orderBy: { column: ASC }
  • MySQL: string value — orderBy: { column: "ASC" }

What's in the Sample Data

The Docker stacks initialize with tables, views, functions, and seed data. See the Installation Guide for the full list.

Next Steps