Grapix -- [GRAPE-ix] A framework for building modular GraphQL APIs with Phoenix and Absinthe

From the README:

The first objective is to provide, out of the box, everything an API developer needs to start implementing their GraphQL API. Generated projects include a stripped down Phoenix Endpoint with websocket support (for subscriptions); GraphQL executable document validation test support; API query test support; JWT claim extraction and validation support; ingress checking for root-level query fields; and a GraphiQL playground.

The second objective (the “modular” part) is to make it easy to decompose your API design into smaller building blocks that can be developed and tested independently, and that can be reused elsewhere. An API module can encapsulate any servers it needs, including a DB. Your generated project includes one such API module to get you started; you can augment your API with additional API modules either within your project, or from a completely separate project.

To try it out, start with :grapix_task, which implements the gpx.new Mix generator task. (You’ll need to manually install three or four dependent archives for now – see the README).

To see how to incorporate an external API module, try :grapix_status_api – it implements a self-contained GraphQL API module which you can add as a dependency to your generated project.

I’ll welcome all feedback, even the sticks and stones :> Cheers,

kobi

2 Likes