@foo-software/ghost-graphql-server

An Apollo GraphQL server for Ghost supporting programmatic or CLI usage.

Usage no npm install needed!

<script type="module">
  import fooSoftwareGhostGraphqlServer from 'https://cdn.skypack.dev/@foo-software/ghost-graphql-server';
</script>

README

@foo-software/ghost-graphql-server

A GraphQL server for Ghost. This project exports an Apollo Server class with pre-defined options to provide querying of a Ghost blog API programmatically and exposes a CLI for command line usage. Below are features of this project.

  • Included types for TypeScript support (this project is written in TypeScript as a matter of fact).
  • Exports an Apollo Server class as a module supporting overriding options (to override the pre-populated options that resolve Ghost API endpoints).
  • Exposes a CLI (with limited options).

Table of Contents

Quick Start

Getting up and running with a standalone is simple and can be done in three ways. Below are all the steps to get up and running.

If you're looking to integrate with an existing, custom Apollo server - go to the custom integration guide

Ghost Content API

See the @foo-software/ghost-graphql package.

Pagination and Filtering

See the @foo-software/ghost-graphql package.

Programmatic Usage

It's important to note that some enviroment variables are required.

import { createGhostGraphQLServer } from '@foo-software/ghost-graphql-server';

const startServer = async () => {
  try {
    const server = createGhostGraphQLServer();
    await server.listen(port);
    console.log(`Ghost GraphQL server is running on port ${port} 🚀`);
  } catch (error) {
    console.error(error);
    process.exit(1);
  }
};

startServer();

Or with options. You can use any options available to Apollo Server.

const server = createGhostGraphQLServer({
  onHealthCheck: () => {
    return Promise.resolve();
  },
});

createGhostGraphQLServer Options

You can use any options available to Apollo Server.

CLI Usage

Install the package globally.

npm install @foo-software/ghost-graphql-server -g

Run the server with required environment variables.

GHOST_API_KEY=$GHOST_API_KEY GHOST_URL=$GHOST_URL \
  ghost-graphql-server --port 4000

CLI Options

Name Description Type Required Default
port The port for GraphQL server to run on. number no 4000

Docker Usage

docker run \
  -p 127.0.0.1:4000:4000/tcp \
  --env GHOST_API_KEY=$GHOST_API_KEY \
  --env GHOST_URL=$GHOST_URL \
  foosoftware/ghost-graphql-server:latest \
  ghost-graphql-server --port 4000

Environment Variables

See the @foo-software/ghost-graphql package.

Schema

The schema structure can be seen in schema.graphql of the @foo-software/ghost-graphql package.