Inspiration
I run a small fleet of VPS machines, and every time one goes dark, I only find out after something already breaks. Traditional uptime monitors feel like spreadsheets: functional, but joyless. With Halloween around the corner, I wondered: what if downtime felt like a ghost story instead of a spreadsheet? A server that goes down shouldn't just turn a dot red. It should die, haunt you, and demand a resurrection.
What it does
GhostWatch is a Halloween-themed uptime monitor for VPS fleets. Add a server, and it becomes a ghost on your dashboard. Healthy ghosts float and glow. A ghost that stops responding collapses into a tombstone and starts haunting you with alerts until you bring it back to life.
- Scheduled health checks for every server in your fleet
- A live haunted dashboard: ghosts for live servers, tombstones for dead ones
- Downtime history and alert notifications when a server dies or recovers
- One-click resurrection check to confirm a server is back
How we built it
We built it with Kiro, using spec-driven development. We wrote the requirements and design docs first, then let Kiro's agent implement the project task by task. The backend runs on Cloudflare Workers with scheduled triggers that ping each server on an interval and record the results. The frontend is a lightweight dashboard that polls the latest status and renders the haunted theme. Everything is deployed on the edge, so the monitor itself stays up even when your servers don't.
Challenges we ran into
The hardest part was telling a real outage apart from a network hiccup. A single missed ping does not mean a server is dead, so we added retries and a grace period before declaring a ghost dead. We also had to keep the dashboard spooky without making it unreadable: tombstones and ghosts are fun, but at 3 a.m. you still need to see exactly which server is down and since when.
Accomplishments that we're proud of
We went from a written spec to a working monitor in a single sprint, and the haunted theme survived contact with real functionality. The monitor now watches real servers, and the first time a test server "died" and turned into a tombstone, the whole idea finally clicked.
What we learned
Writing the spec before writing code changed how we worked with Kiro. When the requirements were clear, the agent's output needed far fewer corrections, and debugging became a matter of fixing the spec instead of untangling generated code. We also learned that a little playfulness goes a long way: people actually check a dashboard they enjoy looking at.
What's next for GhostWatch
Next up: more alert channels such as Telegram and email, checks from multiple regions so a single network blip can't fake an outage, and a public status page so visitors can see whether your services are alive or haunted.
Built With
- cloudflare-workers
- cron-triggers
- css
- github
- html
- javascript
- kiro
- rest-api
- typescript
Log in or sign up for Devpost to join the conversation.