An Apollo GraphQL server for Ghost supporting programmatic or CLI usage.
@foo-software/ghost-graphql-serverA 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).
- Quick Start
- Ghost Content API
- Pagination and Filtering
- Programmatic Usage
- createGhostGraphQLServer Options
- CLI Usage
- CLI Options
- Docker Usage
- Environment Variables
- Schema
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.
- Programmatic
- CLI
- Docker
If you're looking to integrate with an existing, custom Apollo server - go to the custom integration guide
See the @foo-software/ghost-graphql package.
#### Pagination and Filtering
See the @foo-software/ghost-graphql package.
It's important to note that some enviroment variables are required.
``javascript
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.
`javascript`
const server = createGhostGraphQLServer({
onHealthCheck: () => {
return Promise.resolve();
},
});
#### createGhostGraphQLServer Options
You can use any options available to Apollo Server.
Install the package globally.
`bash`
npm install @foo-software/ghost-graphql-server -g
Run the server with required environment variables.
`bash`
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 |
`bash`
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
See the @foo-software/ghost-graphql package.
The schema structure can be seen in schema.graphql of the @foo-software/ghost-graphql` package.