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/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, stored procedures, computed fields, real-time subscriptions (via excalibase-watcher + NATS), Row-Level Security.

MySQL — (http://localhost:10001/graphql):

docker-compose -f docker-compose.mysql.yml up -d
CRUD, ENUM/JSON types, views, stored procedures, 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, stored procedures become mutations, 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
    }
  }
}

Stored procedure results are JSON strings

OUT parameters come back as a single JSON string. Parse it on the client:

const raw = data.callHanaTransferFunds;
const result = JSON.parse(raw);
// result.p_status === "SUCCESS"

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, stored procedures, and seed data. See the Installation Guide for the full list.

Next Steps