Skip to content

Lilembas/Cronicle-Dealer

Repository files navigation

Cronicle-Dealer Distributed Task Scheduling Platform

English | 中文

Go Version Vue Version License Status

A lightweight, scalable, and visual distributed task scheduling and execution platform built with Go + Vue 3

framework

📦 Quick Start

Scenarios

  • You have partitioned your server into multiple Docker containers by CPU/memory resources
  • You have many scheduled tasks and want to dynamically distribute them to containers for execution
  • You want to write your own load balancing strategy
  • You want to visually manage these nodes and tasks
  • You want to manually execute commands on these nodes at any time

Steps

  • git clone & cd this repo
  • cp config.example.yaml config.yaml
  • edit config.yaml
  • run make all to build
  • run bin/manager for manager node
  • run bin/worker for worker node
  • visit http://[manager_ip]:[http_port]
  • default account: admin / admin123

✨ Features

Core Features

  • 🔄 Distributed Architecture: Manager-Worker mode with horizontal scaling support
  • 🎯 Scheduled Execution: Cron expression support for flexible task scheduling
  • 📊 Real-time Monitoring: WebSocket real-time push for task status and logs
  • 📝 Log Streaming: Real-time log push with support for long-running tasks
  • ⚖️ Custom Load Balancing: User-defined load balancing strategy functions (based on node CPU, memory, etc.)

🏗️ Architecture

      ┌──────────────┐
      │     Web      │
      └──────┬───────┘
             │ HTTP/WS
      ┌──────▼──────┐
      │   Manager   │ (Scheduler/API)
      └──────┬──────┘
             │ gRPC Dispatch
   ┌─────────┴─────────┐
   ▼         ▼         ▼
┌─────┐   ┌─────┐   ┌─────┐
│ W-1 │   │ W-2 │   │ W-N │ Worker Nodes (Executor)
└─────┘   └─────┘   └─────┘

🛠️ Tech Stack

Backend

  • Language: Go 1.25+
  • Web Framework: Gin
  • RPC: gRPC
  • Scheduling: robfig/cron/v3
  • Database: SQLite (default) / PostgreSQL (to be improved)
  • Core Component: Redis
  • WebSocket: Melody

Frontend

  • Framework: Vue 3 + TypeScript
  • Build Tool: Vite
  • UI: PrimeVue + Tailwind CSS
  • State Management: Pinia
  • Data Fetching: TanStack Query
  • Log Terminal: xterm.js

🐳 Docker

  • Build both images: make docker
  • Build manager only: docker build --target manager -t cronicle-manager:latest .
  • Build worker only: docker build --target worker -t cronicle-worker:latest .
  • Run with compose: make docker-up

📋 TODO

  • Dockerfile
  • English Version

📸 ScreenShots

🖥️ Dashboard 📋 Events 📜 Task History ⚖️ Load Balance 💻 Run Commands ⚙️ Administrator

🙏 Acknowledgements

Inspired by Cronicle.

About

A lightweight, scalable, and visual distributed task scheduling and execution platform built with Go + Vue 3

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors