@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
- Ghost Content API
- Programmatic Usage
- CLI Usage
- Docker Usage
- Environment Variables
- Schema
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.
- Determine the Ghost URL per the docs. You'll need to set this value as
GHOST_URL
environment variable. - Create and retrieve your API key per the docs. You'll need to set this value as
GHOST_API_KEY
environment variable. - Choose and follow instructions from one of the below three ways to run your server.
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.