Feri — Personal site

Grafbase

Product design for a federated GraphQL platform

Grafbase is a platform for building and operating federated GraphQL APIs. It composes many independently owned backend services into one unified graph, with schema checks and governance built in. Its users are backend and platform engineers who own subgraphs and live in pull-request workflows every day.

Team

Founder, Software Engineers, and me

Skills
  • Product Design
  • Systems Thinking
  • Prototyping
Tools
Figma logo
After Effects logo
Grafbase overview

The feature

Schema Proposals

PR-style review for the GraphQL federation workflow

The problem

Schema changes in a federated graph are high-stakes. One change can ripple across every team and service that composes into it. Federation's composition rules and checks could catch what was technically broken, but they couldn't help the teams agree on a change before it shipped. There was no design-time tool to propose it, discuss it, and sign off on it.

Multiple enterprise clients (teams running large, mission-critical federated graphs) raised the same gap independently: where do we actually review a schema change before it goes live? The demand was clear; the shape of the answer wasn't. So we designed it in collaboration with customers.

Where it belongs

Slack, Notion, or GitHub? None of them fit. The discussion needed a home, and so did the decision: proposing a change, reviewing it, and signing off before it shipped. Slack and Notion detach the conversation from the change, leaving the diff, the line-level context, and the decision state somewhere other than where the schema lives. They also carry no permissions model: no way to define who owns a subgraph, who has to review, or whose approval gates a change.

GitHub isn't universal, so building there would only serve a subset of teams, and it's disconnected from the federated graph anyway, with no knowledge of the gateway, the traces, or the checks that decide whether a change is safe. The schema already lived in Grafbase, where these teams checked metrics, traces, changelogs, and checks every day. So the proposal belonged there, next to the data that tells you whether a change is safe to ship, and where a reviewer is alerted in the same place they'll act on it.

Schema proposal prototype in the Grafbase app

The clickable prototype, 35 frames covering the flow's states, modals, dropdowns, errors, and toasts.

Constraints

What we knew

  • Multiple enterprise clients had asked for it.
  • The audience (backend devs, platform engineers) already lived in pull-request workflows.
  • The Grafbase app was already where they managed the graph.

What we didn't know

  • What the right MVP scope was.
  • Which edge cases would surface once teams actually used it.

Demand wasn't the question. It was already answered. The question was scope: how much to build for an MVP that stayed coherent without guessing at problems we hadn't heard yet.

System

Rather than invent a new workflow, we borrowed the one these engineers already knew: the pull request. The feature isn't a sprawling new product surface. It's six primitives across two flows. An author proposes a schema change; reviewers discuss and approve it.

Proposal

Putting the change on the table

  1. Schema diff view screen
    01

    Schema diff view

    Visualizes the proposed schema change, auto-rebased on the latest published version, so the diff never goes stale.

  2. Schema checks screen
    02

    Schema checks

    Validation, lint, composition, and operation checks run against the proposal. Only approved changes can publish.

  3. Proposal states screen
    03

    Proposal states

    The async state machine every change moves through: draft → under review → approved or rejected.

Review

Discussing it, refining it, accepting it

  1. Inline comments screen
    04

    Inline comments

    Line-level discussion attached to the change itself, so context is line-scoped, not file-scoped. Threads close and stay traceable, never buried.

  2. Review request + notification screen
    05

    Review request + notification

    Async collaboration support. Not a feature, but a liveness condition for the workflow.

  3. Teams + permissions screen
    06

    Teams + permissions

    The governance layer (role-based access control, RBAC): required reviewers, individuals or teams, all of whom must approve before a change can publish.

Iteration

I built a clickable Figma prototype in a week, on purpose: close enough to feel real, easy enough to change, and fast enough to put in front of clients before committing engineering time. The response was strong, so we kicked off iteration rounds with one of those customers, refining the flows against real feedback instead of guesses. The engineers began building the backend in parallel.

Outcome

The approach delivered where it counted: the customer who'd asked for it shaped the MVP through real iteration on the prototype, and we shipped a first version they were happy with. The strongest signal came after launch, when the Grafbase team adopted it internally and used schema proposals regularly across their own subgraphs.

Lessons

One of my favorite books is Steal Like an Artist by Austin Kleon. Its message is that nothing is fully original: every piece of creative work builds on what came before, and new ideas come from reworking what already exists and making it your own.

That held true for this project. I didn't invent a new workflow, I took the pull request flow, something the customers, our engineers, and I all use every day, and adapted it to schema changes. My goal was to shape it so it felt like familiar ground for the developers, and from there, a smoother flow.

See another case study