Provisa / App backends

Now the app team needs an API over it, and the data lives in sources that don't match.

Declare the relationships once and the API spans every source in one response, filtered, paginated and governed per role, in the shape your client wants: GraphQL, REST with OpenAPI, JSON:API or gRPC. There is no backend-for-frontend service to maintain.

Connect your data, query with GraphQL from your app, in five minutes

1. Install and start Provisa

Download the installer for your machine from the download section and run it. The first launch finishes a one-time setup with no internet needed. Then start the services and open the UI.

provisa start   # every service, on your machine
provisa open    # the UI, in your browser

2. Connect the sources

In the UI, open Sources and add Postgres, MongoDB and Salesforce. Provisa reads each source's catalog; pick the tables to register. Nothing is copied: queries go to the data where it lives.

3. Relate the tables

Open Relationships and relate the tables across sources, for example a Postgres order to its MongoDB customer profile and its Salesforce account. Each relationship becomes a field of the API.

4. Query from your app

The GraphQL schema is generated per role. Nested fields follow the relationships across sources:

curl -X POST http://localhost:8001/data/graphql \
  -H "Content-Type: application/json" \
  -H "X-Provisa-Role: app" \
  -d '{"query": "{ orders(where: {status: {_eq: \"open\"}}) { id total customer { name account { owner } } } }"}'

5. Or take REST

The same model is a REST API with an OpenAPI document, generated per role. Open Explore → REST for its Swagger page.

What stays true

  • Each role sees its own schema: fields it may not read are not in it.
  • Writes go through the same grants as reads.
  • Change a relationship and every API follows; there is no client code to regenerate on the server side.