GrAMPS — Composable, Shareable Data Sources for GraphQL
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: ```bash yarn add @gramps/gramps apollo-server graphql ``` Next, create a file calledindex.js
and put the following inside:
```js
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!