> For the complete documentation index, see [llms.txt](https://vincent-desmares.gitbook.io/graphql-node-jobs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vincent-desmares.gitbook.io/graphql-node-jobs/master.md).

# Graphql-Node-Jobs

[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![Build Status](https://github.com/teamstarter/graphql-node-jobs/workflows/Node%20CI/badge.svg)](https://github.com/teamstarter/graphql-node-jobs/actions)

### What does it do?

It allows you to setup many execution pipelines and run them.

![The default GraphQl-workbench interface](/files/-M3uBIy7JYLpZhZpieLt)

### How it works

NGJ (graphql-node-jobs) is available as:

* A standalone NodeJS application
* A GraphQL schema plugable to your Apollo server Schema

### How can I integrate NGJ to my app?

To use the api, there is [node-graphql-jobs-react](https://github.com/vincentdesmares/node-jobs-react) that provide convenient Components to list/trigger/delete and other useful actions. It uses Websockets by default to provide a near-realtime experience.

### Why using graphql-node-jobs?

Use GNJ is you want a project that:

* Is simple yet powerful: The models, the API, the code... are kept simple
* Job persistance: Everything is stored in a database
* No-SaaS: Want to keep your data in your servers? Perfect, GNJ is just Javascript running on your stack
* Simple: Just a few thousands lines of code (but tested ones 😄)
* Not a black box: Can be integrated easily in your Node.js codebase
* Use your ORM: GNJ uses Sequelize, so you stay in known territories
* Database Agnostic: Any database handled by Sequelize can be used

Other projects that might be interesting for you:

* &#x20;<https://github.com/graphile/worker>

GNJ is kept small on purpose, the goal is to have the smallest API for the biggest impact.

### Table of Contents

{% content-ref url="/pages/-M3qGn\_NBhSqiX2aKay8" %}
[What's a Job/Batch/Pipeline?](/graphql-node-jobs/whats-a-job-batch-pipeline.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M3tlTKxJpOtLGrQEbqq" %}
[Running the server](/graphql-node-jobs/running-the-server.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lys87O3fjaQl2TQ47Lt" %}
[Creating a worker](/graphql-node-jobs/creating-a-worker.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M3qL4VNvFq9ru0rCGIq" %}
[The GNJ API](/graphql-node-jobs/the-gnj-api.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M3u19meheQF3-IBstnM" %}
[Plugin the server to your express](/graphql-node-jobs/plugin-the-server-to-your-express.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M3tl5K4CL-l4UFAZmfb" %}
[Q\&A](/graphql-node-jobs/q-and-a.md)
{% endcontent-ref %}

{% content-ref url="/pages/-LysD7\_GRH0hgDXcIGSJ" %}
[Contributing](/graphql-node-jobs/contributing.md)
{% endcontent-ref %}

### Project References

* [The React library](https://github.com/vincentdesmares/node-jobs-react)
* [Architecture Documentation](https://docs.google.com/document/d/1r5F-kTZh_81AXy_9-DG4gMf9UwPJmfg6KBsCEK6Yero/edit#)
* Based on [graphql-sequelize-generator](https://github.com/teamstarter/graphql-sequelize-generator)
