Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/graphile/graphile-engine

Monorepo home of graphile-build, graphile-build-pg, graphile-utils, postgraphile-core and graphql-parse-resolve-info. Build a high-performance easily-extensible GraphQL schema by combining plugins!
https://github.com/graphile/graphile-engine

Last synced: 4 days ago
JSON representation

Monorepo home of graphile-build, graphile-build-pg, graphile-utils, postgraphile-core and graphql-parse-resolve-info. Build a high-performance easily-extensible GraphQL schema by combining plugins!

Awesome Lists containing this project

README

        

# Graphile Engine

Patreon sponsor button
[![Discord chat room](https://img.shields.io/discord/489127045289476126.svg)](http://discord.gg/graphile)
[![Package on npm](https://img.shields.io/npm/v/graphile-build.svg?style=flat)](https://www.npmjs.com/package/graphile-build)
![MIT license](https://img.shields.io/npm/l/graphile-build.svg)
[![Follow](https://img.shields.io/badge/[email protected])](https://twitter.com/GraphileHQ)

Graphile Engine enables you to build high-performance easily-extensible GraphQL schemas by combining plugins.

**NOTE**: _You might be looking for [PostGraphile](https://github.com/graphile/postgraphile) which is Graphile Engine applied to a PostgreSQL database._

## Crowd-funded open-source software

To help us develop this software sustainably, we ask all individuals and
businesses that use it to help support its ongoing maintenance and development
via sponsorship.

### [Click here to find out more about sponsors and sponsorship.](https://www.graphile.org/sponsor/)

And please give some love to our featured sponsors 🤩:

The Guild
The Guild
*
Dovetail
Dovetail
*
Stellate
Stellate
*
Steelhead
Steelhead
*

LatchBio
LatchBio
*

\* Sponsors the entire Graphile suite

## Monorepo contents

**[graphile-build][]**: The core of Graphile Engine: a plugin system that
enables you to build a GraphQL schema out of plugins with advanced performance
capabilities enabled via GraphQL look-ahead functionality.

**[graphile-build-pg][]**: A selection of graphile-build plugins related to
PostgreSQL: schema introspection, generation of fields and types for all
tables, computed columns, query procedures, etc - if there's certain features
you don't want, simply don't use that plugin!

**[graphile-utils][]**: A collection of helper utilities to make writing
graphile-build plugins easier.

**[postgraphile-core][]**: Contains the GraphQL schema functionality of
[PostGraphile][], does not contain the web layer.

**[graphql-parse-resolve-info][]**: Parses a `GraphQLResolveInfo` object into a
tree of the fields that are being requested to enable optimisations to your
GraphQL schema (e.g. we use it in `graphile-build-pg` to determine which fields
are required from the SQL database).

## Brief History

Proof of concept was built by [@Benjie](https://twitter.com/benjie) in 2017,
growing out of a need for greater performance, easier extensibility and
greater customisation in [PostGraphQL][postgraphile]. Over the next year
thanks to the input of the community and ongoing development and testing,
Graphile Engine has matured into the production-ready system it is today.

## Development

Below is a quick-start, for more detailed instructions, please [see the
CONTRIBUTING.md documentation in PostGraphile](https://github.com/graphile/postgraphile/blob/master/CONTRIBUTING.md).

```bash
yarn
yarn lerna bootstrap
yarn watch
```

`yarn watch` will keep monitoring and compiling the babel files, so open
another terminal to run the tests (Note: your PostgreSQL server must be
[configured for logical decoding](packages/lds/README.md#postgresql-configuration)):

```bash
createdb graphileengine_test
export TEST_DATABASE_URL="postgres:///graphileengine_test"
yarn lerna run test
```

If the above succeeds, you're good to go! If not, please try again after
running `yarn install --force` and always feel free to reach out via [our
discord chat](http://discord.gg/graphile) on the #core-development channel.

### Working with Docker

If you want to work in a Docker environment you can follow
[the instructions on the wiki](https://github.com/graphile/graphile-engine/wiki/Development-with-docker-compose).

[postgraphile]: https://github.com/graphile/postgraphile
[lerna]: https://github.com/lerna/lerna
[graphile-build]: packages/graphile-build/
[graphile-build-pg]: packages/graphile-build-pg/
[graphile-utils]: packages/graphile-utils/
[postgraphile-core]: packages/postgraphile-core/
[graphql-parse-resolve-info]: packages/graphql-parse-resolve-info/