# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vincent-desmares.gitbook.io/graphql-node-jobs/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
