Architecture
Every component, and where it runs
EU-hosted on Hetzner VM in Germany, behind Cloudflare. The whole system fits in one view — and the only sub-processors are Cloudflare, Paddle, and SMTP2GO.
Clients
Browser
steadycron.com
Landing & docs
Browser
app.steadycron.com
Dashboard UI
CLI / scripts
api.steadycron.com
REST + manifests
Your cron
ping.steadycron.com
Heartbeat pings
Cloudflare
DNS · TLS · WAF · CDN
Edge proxy, firewall, and rate limiting in front of everything.
Cloudflare Pages
Astro · static
This landing site, served at the edge — never touches the VM.
Caddy
reverse proxy
On the VM: automatic TLS, routes app. / api. / ping. to containers.
Hetzner VM · Germany · Docker Compose
Dashboard
steadycron-dashboard
Next.js. Authenticated UI; calls the API over the internal network.
API + Ping
steadycron-api · .NET
REST · ping ingest · cron preview · template vars · activity · admin.
steadycron-scheduler · Quartz.NET clustered
HTTP executor
Polly · SSRF guard
Makes the scheduled HTTPS calls — retries, timeouts, redirect re-checks.
Heartbeat watcher
30s tick
Flags missed and stuck runs against each grace period.
Alert dispatcher
outbox · NOTIFY
Drains the outbox; shapes, delivers, and retries alerts.
Background workers
×4 services
Delivery flush, anomaly detection, retention prune, Paddle reconcile.
PostgreSQL 17
app · Quartz · outbox
One instance for everything. LISTEN/NOTIFY replaces a broker — no Redis.
Backups
nightly · encrypted
Encrypted pg_dump shipped offsite; quarterly restore drills.
External services & your systems
Your endpoints
the jobs we call
Your HTTPS handlers, called on schedule.
Alert channels
Slack · Discord · …
Telegram, webhook, email — outbound only.
Paddle
billing · MoR
Merchant of Record — handles tax. No card data here.
SMTP2GO
Verification, password reset, and email alerts.