I built a Free Cron Job Scheduler with Node.js + Typescript

Schedule and manage cron jobs with Node.js + TypeScript. Configure with env vars, automate tasks, deploy fast with Docker. Free & open-source.

Free Cron Job Scheduler built with Node.js and Typescript
I'm excited to share a lightweight, open-source cron job scheduler I built using Node.js and TypeScript. It’s designed for developers who need a fast, modular way to schedule HTTP tasks without reinventing the wheel. Best of all — it's completely free and easy to self-host.
👉 Check it out on GitHub — if you find it useful, a ⭐ is always appreciated!

Why I Built This Cron Job Utility

In nearly every project I’ve worked on, I needed a way to schedule recurring tasks — whether it was generating reports every Monday, sending emails monthly, or cleaning up stale data. I kept writing the same cron job configurations over and over again.
Instead of duplicating boilerplate across projects, I decided to build a reusable, configurable, and easy-to-integrate cron job scheduler that works out of the box.

How It Works

This scheduler uses the node-cron library and reads job definitions from environment variables. Each job can be configured to send an HTTP request like GET, POST, etc. to a specified endpoint, with optional parameters.

Key Features

  • Configure jobs with simple environment variables
  • Supports all the HTTP methods (GET, POST, etc)
  • Optional parameters for secure task execution
  • Docker-ready for easy deployment
  • Open-source and free to use

Common Use Cases

If your application exposes public or internal API routes, you can use this cron job scheduler to automate tasks like:
  • Database backups
  • API health checks
  • Cache invalidation
  • Report generation
  • Email or newsletter dispatch
  • Background cleanups
  • Triggering task queues

How to set up cron jobs?

You can run the scheduler via Docker, with jobs defined in environment variables using the :: separator.
.env
TIMEZONE="UTC"
RUN_ON_START="false"

JOB1="* * * * *::GET::https://example.com/api/"
JOB2="*/2 * * * *::POST::https://example.com/api/::prop1=value1::prop2=value2"

This configuration schedules two cron jobs:
  • One that runs every minute and sends a GET request
  • Another that runs every 2 minutes and sends a POST request with payload

Integrating with Your App

Let’s say you want to automate database backups. You can:

  1. Write the backup logic in your existing codebase.
  2. Expose it via a secure API endpoint (e.g. /api/backup).
  3. Deploy the scheduler and configure a cron job to hit that endpoint.
To prevent unauthorized access, use POST requests with secret tokens or auth headers. For example, include an AUTH_SECRET parameter that your server validates.
.env
JOB3="0 0 * * *::POST::https://yourdomain.com/api/backup::auth=YOUR_SECRET"

This ensures only your cron job scheduler can trigger sensitive operations.

Try It Out

I'm already using this scheduler across multiple of my projects. It's a flexible and simple tool that gets the job done — especially when you just need a simple cron job solution that’s developer-friendly.

You can deploy it in seconds using my Railway template:


If you find this tool helpful, I’d love your feedback. Contributions, issues, or even a quick star on GitHub help the project grow. Thanks for checking it out!

Table of Contents

Blog by Aliaksandr Tsykin

Learn web development and digital marketing with me!