@gramps/gramps

    4.1.2 • 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!

    Install

    npm i @gramps/gramps

    DownloadsWeekly Downloads

    90

    Version

    4.1.2

    License

    MIT

    Unpacked Size

    28.2 kB

    Total Files

    12

    Last publish

    Collaborators

    • molyholy
    • jake.henderson
    • ryanomackey
    • jlengstorf