I spent a weekend building Uptimer, a self-hosted uptime monitoring tool, and I've found it useful enough that I wanted to share it publicly. Today I'm releasing it as an open-source template on GitHub.
What it does
Uptimer keeps an eye on your websites and APIs so you don't have to. At its core it:
- Monitors uptime – regularly pings your endpoints and records response times and status codes.
- Tracks SSL certificates – alerts you before a certificate expires so you're never caught off guard.
- Sends email alerts – uses Resend to notify you the moment something goes down (or comes back up).
- Provides dashboards – a clean, at-a-glance view of all your monitors, their current status, and historical uptime data.
The stack
I wanted something that could run entirely within free tiers — no surprise bills for monitoring a handful of personal projects. The stack:
- Next.js on Vercel – the app itself, with API routes handling the monitoring logic.
- Neon PostgreSQL – serverless Postgres for storing monitor configurations, check results, and incident history.
- Vercel Cron – scheduled jobs that trigger the monitoring checks at regular intervals.
- Vercel Auth – authentication so your dashboard stays private.
- Resend – transactional email for alerts when monitors change state.
The combination means you can deploy your own instance with a single click, connect a Neon database, add your Resend API key, and you're monitoring within minutes.
Why build another monitoring tool?
There are plenty of uptime monitors out there — Uptime Robot, Better Uptime, Statuspage. But most either limit free-tier features, require you to trust a third party with your monitoring data, or don't give you the flexibility to customise alerts and checks the way you want.
Uptimer is self-hosted and open source. You own the data, you control the checks, and because it runs on Vercel and Neon free tiers, the running cost is effectively zero for personal use.
And honestly, building it was a great excuse to push v0 by Vercel hard over a weekend and see how much of a production-ready tool it could scaffold. The answer: a lot. v0 handled much of the heavy lifting — from the dashboard UI to the monitoring logic — and I focused on refining the architecture, optimising for free-tier database limits, and polishing the overall experience.
Get started
The template is ready to fork and deploy:
- GitHub: bseymour/Website-Uptime-Monitor-template
- Live demo: uptimer-demo.vercel.app
Clone it, deploy to Vercel, connect Neon and Resend, and you'll have your own uptime monitor running in minutes. The README walks through the full setup.
If you find it useful, give it a star on GitHub — and if you hit any issues or have feature ideas, open an issue. I'd love to see what people do with it.