Skip to content

a-atalla/cronat

Repository files navigation

Cronat - Cron Jobs as a Service

Cronat is a powerful, web-based cron job scheduling service that allows you to schedule and manage webhook calls without maintaining your own servers. Built with Django and Celery, it provides a reliable, scalable solution for automated task execution.

Features

  • 🕒 Flexible Scheduling: Schedule jobs using either simple intervals (seconds) or full cron expressions
  • 🔗 Webhook Support: Execute HTTP POST requests to any endpoint on schedule
  • 🔄 Automatic Retries: Built-in retry mechanism with exponential backoff for failed requests
  • 📊 Execution Logs: Detailed logging of all job executions with success/failure tracking
  • 🎛️ Web Dashboard: User-friendly interface to manage schedules and view execution history
  • 🔐 Multi-Provider Auth: Login with Google, GitHub, or Twitter/X
  • 📱 Real-time Controls: Start, stop, pause, and manually trigger jobs
  • 🔒 Secure: Encrypted webhook URLs and custom header support for authentication
  • ⚡ High Performance: Redis-backed task queue with Celery workers
  • 🐳 Docker Ready: Containerized deployment with Docker Compose

Screenshot20250516113620

Screenshot20250516113756

Screenshot20250516113200

Prerequisites

  • Docker and Docker Compose
  • Make
  • Python 3.12+ (for local development)
  • uv - Python package installer

Quick Start

  1. Clone the repository:

    git clone https://github.com/yourusername/cronat.git
    cd cronat
  2. Install dependencies:

    make pip
  3. Start the application:

    make docker
  4. Access the application:

  5. View logs:

    make logs

Architecture

  • Backend: Django 5.1+ with PostgreSQL database
  • Task Queue: Celery with Redis broker
  • Frontend: Django templates with TailwindCSS and DaisyUI
  • Authentication: Django Allauth with social providers
  • Monitoring: Flower for Celery task monitoring
  • Deployment: Docker Compose with production-ready configuration

Usage

Creating a Scheduled Job

  1. Sign in with your preferred OAuth provider
  2. Navigate to "Scheduled Jobs" → "New Schedule"
  3. Configure your job:
    • Name: Descriptive name for your job
    • Webhook URL: The endpoint to call (must be HTTPS for production)
    • Schedule: Choose either:
      • Interval: Simple seconds-based scheduling (e.g., 3600 for hourly)
      • Cron Expression: Full cron syntax (e.g., 0 9 * * 1-5 for weekdays at 9 AM)
    • Custom Headers: Optional authentication headers

Managing Jobs

  • Toggle: Enable/disable jobs without deleting them
  • Test: Manually trigger a job execution
  • Monitor: View detailed execution history and logs

Security Features

  • Encrypted Storage: Webhook URLs are encrypted in the database
  • Idempotency: Unique request IDs prevent duplicate executions

Roadmap

  • API Access: Full REST API with authentication
  • Webhook Failure Alerts: Email/Slack notifications
  • Advanced Scheduling: Timezone support, holiday handling
  • Job Templates: Reusable job configurations
  • Team Management: Multi-user organizations
  • Analytics Dashboard: Execution statistics and insights
  • Webhook Payload Support: Custom request bodies and methods

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments


Cronat - Simplifying cron job management, one webhook at a time. 🚀

About

web-based cron job scheduling service

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors