node package manager



A simple remote cron service using Node.js and MongoDB.


  • Each cron job polls a web resource via a GET request at regular intervals.
  • Familiar cron scheduling (e.g. '00 30 11 * * 2-6') (powered by node-cron).
  • Comprehensive RESTful API for creating, listing, updating and deleting cron jobs
  • Easy installation and zero administration


Clone the repository from GitHub and install dependencies using npm:

> git clone git://
> npm install

Start the application with:

> node app

Head to the API root for a list of available resources:



A job is composed of an expression and an url.

// to create a job, send a POST request to the /api/job route
curl -d 'expression=* * * * * *&url=http://localhost:8888' http://localhost:8082/api/job
// to list jobs, send a GET requst to the /api/job route
curl http://localhost:8082/api/job
// to update a job, send a PUT request to the /api/job/:id route
curl -X PUT -d 'expression=* * * * * *&url=http://localhost:8888' http://localhost:8082/api/job/4fcd284b87cf3b5a07000004
// to remove a job, send a DELETE request to the /api/job/:id route
curl -X DELETE http://localhost:8082/api/job/4fcd284b87cf3b5a07000004

The job expression follows the cron pattern syntax described here.

Tip: You can start the provided dummy target to test the job polling:

> node fixtures/dummyTarget.js


Uptime uses node-config to allow YAML configuration and environment support. Here is the default configuration, taken from config/default.yaml:

  server:   localhost
  database: cron
  user:     root 

  port:     8082

To modify this configuration, create a development.yaml or a production.yaml file in the same directory, and override just the settings you need. For instance, to run the service on port 80 in production, create a production.yaml file as follows:

  port:     80


The code is free to use and distribute, under the MIT license.


  • Web GUI
  • Record response status for each executed job
  • Run jobs in a separate process
  • Deal with web proxies