How We Built a Cron Job Monitoring System That Actually Works
The Problem We Couldn't Ignore
Cron jobs are the backbone of many SaaS applications. But when they fail silently, you don't find out until it's too late.
We built QuietPulse because we needed a simple, reliable way to know when our background tasks go missing — without breaking the bank.
What QuietPulse Does
QuietPulse is a heartbeat monitoring service for cron jobs. Here's the core idea:
- Create a job in QuietPulse with a minimum interval (e.g., every 5 minutes)
- Ping QuietPulse after your cron job finishes successfully via a simple GET request
- Get alerted (via Telegram) if the job doesn't check in on time
That's it. No complex UIs, no overwhelming dashboards. Just one question: "Did my job run when it was supposed to?"
Architecture: Simple Stack, Reliable Delivery
We chose technologies we knew would work reliably in production:
- Backend: NestJS (TypeScript, dependency injection, great for APIs)
- Frontend: Angular 21 (standalone components, modern tooling)
- Database: SQLite with Prisma ORM (fast, zero-config, easy backups)
- Hosting: DigitalOcean VPS ($4/month) in Frankfurt
- Payments: NOWPayments (crypto invoices, no Stripe/PayPal needed)
- Alerts: Telegram Bot API (instant notifications)
The whole thing runs on a single $4 VPS. No Kubernetes, no microservices — just one monolith that does its job well.
How the Heartbeat Works
Each job gets a unique HTTP endpoint:
GET https://quietpulse.xyz/ping/{jobToken}
Your cron job makes a request after completion:
curl "https://quietpulse.xyz/ping/AbCdEf123..."
QuietPulse records the timestamp. If the expected interval passes without a new ping, it sends a Telegram alert to the user's configured chat.
Simple, stateless, and works from any environment (even without outbound internet, as long as it can reach our endpoint).
Payment Challenges: Why Crypto?
We're based in Belarus. Stripe and PayPal don't work here. So we integrated NOWPayments, which accepts dozens of cryptocurrencies and converts them to stablecoins.
Key features:
- User picks their preferred crypto at checkout
- Webhook notifies us when payment confirms
- No monthly subscription headaches
It's not perfect, but it works globally without banking corruption.
Pricing: Freemium That Actually Helps
We kept pricing simple:
- Free: 2 jobs, minimum interval 1 hour
- Starter: $7/month (or $20 for 3 months) — 20 jobs, min interval 5 minutes
- Unlimited: $25/month — unlimited jobs, min interval 1 minute
We want small projects to be able to monitor their critical tasks for free. If you need more, you upgrade. No hidden quotas.
Lessons Learned
- Start with Telegram. Notifications via Telegram are more reliable than email. Users already have Telegram installed.
- SQLite scales further than you think. With proper connection pooling and WAL mode, a single file handles thousands of pings per minute.
- Don't overcomplicate the dashboard. Our entire UI is one page with a table and a "create job" modal. Users don't need analytics, they need alerts.
- Test your own cron jobs. We run QuietPulse to monitor QuietPulse's own maintenance tasks. If we miss an alert, we know something's broken.
- Crypto payments are viable. Yes, there's volatility, but NOWPayments auto-converts to USDT. The friction is mostly on the user side, not ours.
What's Next?
We're polishing the first stable release and writing documentation. The first blog post about detecting missed cron jobs is already live at quietpulse.xyz/blog.
If you have cron jobs that matter, give QuietPulse a try. It's free to start, and setup takes less than 2 minutes.
Create your first job → quietpulse.xyz
Built with TypeScript, Angular, and a pressing need to sleep better at night.
Top comments (0)