@gramps/gramps

4.4.0 • Public • Published

GrAMPS · An easier way to manage the data sources powering your GraphQL server

GrAMPS — Composable, Shareable Data Sources for GraphQL

license npm version Build Status Maintainability Test Coverage Greenkeeper badge All Contributors

An easier way to manage the data sources powering your GraphQL server.

GrAMPS (short for GraphQL Apollo Microservice Pattern Server) is a thin layer of helper tools designed for the Apollo GraphQL server that allows independent data sources — a schema, resolvers, and data access model — to be composed into a single GraphQL schema, while keeping the code within each data source isolated, independently testable, and completely decoupled from the rest of your application.

Developer Quickstart

To get a GrAMPS+Apollo gateway up and running, start by installing the required packages:

yarn add @gramps/gramps apollo-server graphql

Next, create a file called index.js and put the following inside:

const gramps = require('@gramps/gramps').default;
const { ApolloServer } = require('apollo-server');

const getGraphQLServer = async () => {
	const GraphQLOptions = await gramps();

	const server = new ApolloServer({...GraphQLOptions});

	server.listen().then(({ url }) => {
	  console.log(`🚀 Server ready at ${url}`)
	});
};

getGraphQLServer();

Start the server with node index.js, then open http://localhost:4000/graphql to see the GraphQL Playground user interface.

For a more in-depth starter, see the 5-minute quickstart in our documentation.

Why Does GrAMPS Exist?

GrAMPS is an attempt to create a standard for organizing GraphQL data source repositories, which allows for multiple data sources to be composed together in a plugin-like architecture.

The ability to combine independently managed data sources into a single GraphQL server is a core requirement for IBM Cloud’s microservice architecture. We have dozens of teams who expose data, so a single codebase with all GraphQL data sources inside was not an option; we needed a way to give each team control of their data while still maintaining the ability to unify and expose our data layer under a single GraphQL microservice.

GrAMPS solves this problem by splitting each data source into independent packages that are composed together into a single GraphQL server.

Contributors

Thanks goes to these wonderful people (emoji key):


Jason Lengstorf

💻 🎨 📖 📢

Eric Wyne

💻 🤔

Cory Cook

🤔

Michael Fix

💻

Ryan Mackey

💻

Mostafa Sholkamy

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Readme

Keywords

Package Sidebar

Install

npm i @gramps/gramps

Weekly Downloads

20

Version

4.4.0

License

MIT

Unpacked Size

29 kB

Total Files

12

Last publish

Collaborators

  • molyholy
  • jake.henderson
  • ryanomackey
  • jlengstorf