flohoss/gocron
Live in productionA 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.
- Go69.8%
- Vue17.3%
- TypeScript5.6%
- JavaScript3.1%
- Dockerfile2.1%
- CSS1.0%
- HTML0.8%
- Shell0.3%
2 Reviews
GoCron offers a straightforward self-hosted scheduler configured through YAML. Jobs can inherit default schedules and environment variables, run multiple commands in sequence, and be managed through a Go service with a Vue interface and SQLite state. Docker deployment, environment-variable overrides, a configurable database location, health checks, API documentation, and optional installation of common backup tools make it especially convenient for homelab and backup automation.
Schedulers need strong failure semantics, so the documentation should clearly cover overlapping runs, time zones and daylight-saving changes, retries, timeouts, missed schedules, concurrency limits, process termination, output retention, and notification delivery. Secrets should not live casually in YAML or environment variables without guidance for Docker secrets or external stores. Pre-installing powerful backup and container tools also increases the image’s supply-chain surface, so minimal images and signed releases would help. GoCron is best for users who want a visible, configuration-driven alternative to scattered cron entries, provided they test recovery and locking behavior before entrusting it with critical backups.
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.
