https://github.com/blablatdinov/croniq
Modern open-source job scheduler with cron syntax, web UI, and REST API. Built with Elixir & Phoenix.
https://github.com/blablatdinov/croniq
automation background-jobs cron cron-jobs devops elixir http job-scheduler phoenix scheduler task-scheduler webhooks
Last synced: 10 months ago
JSON representation
Modern open-source job scheduler with cron syntax, web UI, and REST API. Built with Elixir & Phoenix.
- Host: GitHub
- URL: https://github.com/blablatdinov/croniq
- Owner: blablatdinov
- License: mit
- Created: 2025-05-29T21:10:21.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-08-18T20:57:22.000Z (10 months ago)
- Last Synced: 2025-08-18T22:32:55.548Z (10 months ago)
- Topics: automation, background-jobs, cron, cron-jobs, devops, elixir, http, job-scheduler, phoenix, scheduler, task-scheduler, webhooks
- Language: Elixir
- Homepage: https://croniq.ilaletdinov.ru
- Size: 1.2 MB
- Stars: 9
- Watchers: 0
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Croniq
[](https://github.com/yourusername/blablatdinov/croniq)
[](LICENSE)
[](https://github.com/XAMPPRocky/tokei_rs)
[](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 resource usage
---
**Live demo:** [croniq.ilaletdinov.ru](https://croniq.ilaletdinov.ru)
The Croniq web interface allows you to manage scheduled jobs through a modern dashboard:

Task List
View all jobs, their statuses, and schedules

Create Task
Convenient form for creating a new job

Request Log
Execution history and HTTP request logs
---
## π Quick Start
**Requirements:**
- Elixir 1.14+
- PostgreSQL 12+
- Node.js 16+ (for assets)
**Installation:**
```bash
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](http://localhost:4000) in your browser.
---
## π Usage
### API Example: Create a New Job
```bash
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
```bash
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](LICENSE) file for details.
---
## π Links
- [Elixir](https://elixir-lang.org/)
- [Phoenix](https://www.phoenixframework.org/)
- [Quantum](https://github.com/quantum-elixir/quantum-core)
- [LiveView](https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html)
---
_Made with β€οΈ by the Croniq community_