Home
Softono
croniq

croniq

Open source MIT Elixir
11
Stars
1
Forks
5
Issues
0
Watchers
1 week
Last Commit

About croniq

<!-- SPDX-FileCopyrightText: Copyright (c) 2025-2026 Almaz Ilaletdinov <[email protected]> SPDX-License-Identifier: MIT --> # Croniq [![Build Status](https://img.shields.io/github/actions/workflow/status/blablatdinov/croniq/pr-check.yml?branch=master)](https://github.com/yourusername/blablatdinov/croniq) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Lines of code](https://tokei.rs/b1/github/blablatdinov/croniq?style=flat)](https://github.com/XAMPPRocky/tokei_rs) [![Hits-of-Code](https://hitsofcode.com/github/blablatdinov/croniq)](https://hitsofcode.com/github/blablatdinov/croniq/view) _A modern, open-source job scheduler built with Elixir and Phoenix_ --- ## ✨ Features - **HTTP Task Scheduling**: Trigger any API endpoint on a schedule - **Full Cron Syntax**: Supports standard cron expressions with seconds precision - **Retry Mechanism**: Automatic retries with exponential backoff - **Web UI & REST API**: Manage jobs through both interfaces - **Lightweight**: Minimal r ...

Platforms

Web Self-hosted

Languages

Elixir

Croniq

Build Status License Lines of code Hits-of-Code

A modern, open-source job scheduler built with Elixir and Phoenix


✨ Features

  • HTTP Task Scheduling: Trigger any API endpoint on a schedule
  • Full Cron Syntax: Supports standard cron expressions with seconds precision
  • Retry Mechanism: Automatic retries with exponential backoff
  • Web UI & REST API: Manage jobs through both interfaces
  • Lightweight: Minimal resource usage

Live demo: croniq.ilaletdinov.ru

The Croniq web interface allows you to manage scheduled jobs through a modern dashboard:

Task List
Task List
View all jobs, their statuses, and schedules
Create Task
Create Task
Convenient form for creating a new job
Request Log
Request Log
Execution history and HTTP request logs

πŸš€ Quick Start

Requirements:

  • Elixir 1.14+
  • PostgreSQL 12+
  • Node.js 16+ (for assets)

Installation:

git clone https://github.com/yourusername/croniq.git
cd croniq
mix deps.get
cd assets && npm install && cd ..
mix ecto.setup
mix phx.server

Visit http://localhost:4000 in your browser.


πŸ“š Usage

API Example: Create a New Job

curl -X POST http://localhost:4000/api/jobs \
  -H "Content-Type: application/json" \
  -d '{
    "name": "daily-backup",
    "schedule": "0 3 * * *",
    "url": "https://api.example.com/backup",
    "method": "POST",
    "headers": {
      "Authorization": "Bearer your-token"
    },
    "body": {
      "database": "production"
    }
  }'

List All Jobs

curl http://localhost:4000/api/jobs

Web UI

  • View, create, edit, and delete scheduled tasks via the web dashboard.
  • Real-time status and logs for each job.

βš™οΈ Configuration

  • All configuration is managed via config/*.exs.
  • Database settings: config/dev.exs, config/prod.exs
  • Environment variables can be used for secrets and production settings.

πŸ—οΈ Architecture Overview

  • Elixir + Phoenix: Robust, concurrent backend.
  • Quantum: Used for cron-like scheduling.
  • Ecto: Task persistence in PostgreSQL.
  • HTTPoison: Executes HTTP requests for tasks.

How it works:

  • Each task is stored in the database and scheduled via Quantum.
  • When a task is due, Croniq sends an HTTP request as specified.
  • Retries and status updates are handled automatically.
  • Both REST API and Web UI are available for management.

🀝 Contributing

We welcome contributions! To get started:

  1. Fork the repository
  2. Create a new branch (git checkout -b feature/my-feature)
  3. Make your changes
  4. Commit and push (git commit -am 'Add new feature' && git push origin feature/my-feature)
  5. Open a Pull Request

πŸ›‘οΈ Security

  • All user input is validated and sanitized.
  • Built-in CSRF protection and secure session management.
  • Please report vulnerabilities via GitHub Issues.

πŸ—ΊοΈ Roadmap

  • [ ] Task history and logs
  • [ ] Advanced authentication (OAuth, SSO)
  • [ ] Multi-tenant support
  • [ ] More integrations (Slack, Email, etc.)
  • [ ] Retry Mechanism

❓ FAQ

Q: Can I use custom HTTP headers?
A: Yes, just specify them in the headers field when creating a job.


πŸ“„ License

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


πŸ”— Links


Made with ❀️ by the Croniq community