Developers & Indie Hackers

Monitoring for Developers and Side Projects

Side projects deserve monitoring too. Not the enterprise kind with an onboarding call, but the kind you set up in four minutes and then forget about until it saves you.

What tends to go wrong

  • You are the whole on-call rotaNo team to escalate to. Alerts need to reach you where you actually are.
  • Discovering breakage weeks laterLow-traffic projects can be down for a long time before anyone notices, including you.
  • Free tiers that expire quietlyA hosting free tier suspends, a database sleeps, a domain lapses — all without warning.
  • Enterprise tooling is overkillYou do not need incident command structure for a project with forty users.

What to monitor

EndpointWhy it mattersSuggested interval
Main app URLCatches hosting suspensions, failed deploys, and sleeping instances.5m
API health endpointVerifies the backend and its database connection, not just static assets.5m
Certificate expiryFree certificates on side projects lapse constantly when automation drifts.continuous
Scheduled job heartbeatConfirms cron and background workers are still running at all.30m

Route alerts somewhere you will see them

For a solo developer, email is usually the wrong channel — it arrives alongside everything else and gets triaged tomorrow. A Discord or Telegram message reaches you in seconds and costs nothing.

All of those channels are on the Free plan. Webhooks (from Starter) are worth the extra five minutes if you want something custom: a push notification, a home automation light, a message into whatever tool you already live in.

Watch the things that fail quietly

Side projects rarely fail loudly. A free-tier database goes to sleep after inactivity. A hosting platform suspends the app for exceeding a quota. A background job stops running because a token expired.

None of these produce an error anyone sees, because nobody is looking. A health endpoint that touches the database and a heartbeat check on your scheduled jobs cover most of it.

Keep it proportionate

A project with modest traffic does not need checks every 15 seconds from 3 regions. Checking every 3 minutes catches essentially everything that matters at that scale, without generating noise you will start ignoring — and that is exactly what the Free plan gives you, for 50 monitors, with no card.

The goal is to know within a reasonable window, not to build a NOC for a weekend project.

A five-minute setup

Main URL: create an HTTP monitor for your app. Type the bare domain and the dashboard adds https://. Add a Required keyword that only appears on your real page, such as your app's name. When a host suspends a project or a domain lapses, the replacement page often returns 200, and the keyword is what catches it.

Health endpoint: add a route such as /api/health that runs one cheap database query and returns a small JSON body like {"status":"ok"}. Monitor it with an API monitor that expects 200 and asserts on that field. This is the check that notices a sleeping free-tier database or an expired connection string.

Cron jobs: create a cron heartbeat monitor with the same cron expression and time zone as the job, then add a call to the heartbeat URL at the end of the job, for example: 0 2 * * * /usr/local/bin/backup.sh && curl -fsS "<heartbeat URL>". To report a failure on purpose, call the same URL with ?status=fail. If a run is due and no ping arrives within the grace period, you get an alert.

Certificates and domains: on the monitor's Domain & SSL card, turn on reminders before the certificate or domain expires. They start 30 days ahead by default, then come at 15, 7 and 2 days and 24 hours before expiry. Chat channels receive them whenever the reminders are on; for email, also turn on the SSL Certificate Expiry preference, which is off by default.

DNS: DNS record monitors are on every plan too. Watching your A and MX records catches a mistaken edit at your DNS provider before your users notice.

A status page and badge for your users

Free includes 1 status page. For an open-source project, a public API or a small SaaS, add your main monitors as components and share the link. The page shows live status, 90 days of uptime bars and past incidents, and users can subscribe to incident emails.

Each status page also has a status badge you can paste into a README as Markdown or HTML. It shows the page's overall state, so visitors to your repository can see at a glance whether the hosted version is up.

Automate it once you have more than a few monitors

The sutramx CLI keeps monitors, status pages and alert channels in a version-controlled sutramx.yml file: sutramx plan shows what would change and sutramx apply makes it so. The CLI and the REST API use a workspace API key, which needs a plan with API keys (Starter, Growth and Pro).

Starter also brings checks every minute, signed webhooks, multi-step API checks and confirmation from more than one region before you are alerted. None of that is necessary on day one, and there is no trial to run out: Free does not expire.

Common questions

Is the Free plan really free? Yes. 50 monitors, checks every 3 minutes, unlimited team members, no card and no expiry. Email, Slack, Discord, Telegram, Microsoft Teams and browser push alerts are all included.

Will monitoring keep my free-tier app awake? It can, because every check is a real request. Some hosts treat that as activity and some do not, and some limit how many hours a free app may run. If you would rather your app sleeps, check it less often or monitor a static page instead, and accept that the first visitor after a sleep will wait.

What happens if I need more than 50 monitors? Creating or resuming one more is blocked and the dashboard offers an upgrade. Nothing is deleted and there is no overage billing. Paused monitors do not count, so you can pause old projects to make room.

Know it’s down before your customers do.

Start free — Free plan forever, no card required. Upgrade any time.