A simple yet powerful cron job scheduler to automate recurring API requests (GET/POST) using Agenda.js. Schedule jobs, view logs, and control execution — all from a modern web dashboard.
- 🕒 Schedule recurring jobs using cron expressions
- 📡 Supports GET, POST and many other requests options with custom headers/body
- 🧠 Built on Agenda.js for robust background processing
- 📊 View job execution logs and status (success/failure)
- ✨ Toggle jobs on/off without deleting them
- 💻 Clean React + Tailwind
- 🔐 JWT-based authentication
- ⚡ Dedicated Job Runner for background execution
⚠️ Before you start, make sure you have the following installed:
- pnpm (package manager used in this project)
- TypeScript (
tsc
compiler)
git clone https://github.com/sunjay-dev/CronJob-Scheduler.git
cd CronJob-Scheduler
cd Backend
pnpm install
cp .env.example .env
# Update .env with your MongoDB URI (Other fields are optional until you're testing them)
pnpm run dev
cd Frontend
pnpm install
# Update VITE_BACKEND_URL in .env (defaults to http://localhost:3000)
pnpm run dev
⚡ Required for actual scheduling
cd job-runner
pnpm install
cp .env.example .env
# Make sure the MongoDB URI matches the backend
pnpm run dev
⚡ Only needed if you want to test/run email service.
cd email-service
pnpm install
cp .env.example .env
# Update .env with your RESEND_EMAIL_API_KEY, SENDEREMAIL, and EMAIL_SERVICE_SECRET
pnpm run dev
CronJob-Scheduler/
├── Backend/ # Server (Express + Agenda.js)
├── Frontend/ # Client (React + Tailwind)
├── job-runner/ # Background worker (Agenda.js)
├── email-service/ # Email microservice (Express + Resend)
├── README.md
Create/Update/Delete jobsJob toggle (enable/disable)Execution logs viewerSupport for PUT/DELETE requestsUser account settingsGoogle login configForget passwordEmail notifications on failureRetry on failure + backoff strategy- Convert to Micro-service architecture
Contributions, suggestions, and improvements are always welcome!