Skip to content
flohoss

flohoss/gocron

Live in production

A task scheduler built with Go and Vue.js that allows users to specify recurring jobs via a simple YAML configuration file. The scheduler reads job definitions,

A task scheduler built with Go and Vue.js that allows users to specify recurring jobs via a simple YAML configuration file. The scheduler reads job definitions, executes commands at specified times using cron expressions, and passes in environment variables for each job.

548 5 since joining 18GoPush 21d agoListed 1mo ago2 open issuesMIT
backupbackupscrondockergolangscheduleschedulertask
  • Go69.8%
  • Vue17.3%
  • TypeScript5.6%
  • JavaScript3.1%
  • Dockerfile2.1%
  • CSS1.0%
  • HTML0.8%
  • Shell0.3%
View on GitHub

Report a problem

1 Review

gocron is a strong example of a small infrastructure tool with practical deployment in mind. The idea is simple: define recurring jobs in YAML, run them on cron schedules, pass job-specific environment variables, and manage the system through a Go backend plus Vue UI. The README does a good job showing the intended usage with Docker and Compose, the default config path, --config overrides, SQLite storage behavior, GC_ environment overrides, screenshots in dark/light mode, API docs screenshots, downloadable Linux binaries, and a development workflow with Go tests plus e2e tests. The Go dependencies also make sense for this shape of app: Echo, Huma for API ergonomics/docs, robfig/cron for scheduling, Viper for configuration, SQLite, SSE, validation, and filesystem watching. Simulating the product, I’d expect to mount a config folder, start the container on port 8156, then inspect scheduled jobs and output through the web UI. That is a clean operator experience. The improvement area is around safety and observability. Because this executes shell commands on a schedule, the README should be explicit about trust boundaries, permissions, working directories, log retention, command timeouts, and failure notification behavior. I’d also like to see a sample config.yaml excerpt directly in the README, not only linked, because config-driven tools live or die by how quickly a user can adapt the first example.