Caliban is a purely functional library for creating GraphQL backends in Scala. It relies on Magnolia to automatically derives GraphQL schemas from your data types, Fastparse to parse queries and ZIO to handle various effects.
The design principles behind the library are the following:
- pure interface: errors and effects are returned explicitly (no exceptions thrown), all returned types are referentially transparent (no
Future
). - clean separation between schema definition and implementation: schema is defined and validated at compile time using Scala standard types, resolver (
RootResolver
) is a simple value provided at runtime. - minimal amount of boilerplate: no need to manually define a schema for every type in your API.