Automated
Web
Monitoring
Build 02
A self-healing monitor that watches a login-protected web portal around the clock and emails me the moment something new appears, so nobody has to sit refreshing a page all day.
Watchtower is a self-healing web monitor built with Python and Playwright and run as a systemd service on Oracle Cloud. It watches a login-protected portal around the clock and emails me when a new item appears.
The task is trivial each time and exhausting in aggregate. That is exactly the kind of work software should take over.
Some web portals publish new items at unpredictable moments and offer no notification when they do. The only way to catch one is to keep a tab open and refresh it, again and again, for hours.
It fragments focus, eats the day and still misses things, because no person can refresh a page every few seconds without lapses.
Watchtower takes that job over completely: watch, detect, tell me. Nothing more. What to do with an alert stays a human decision.
Unattended software earns trust by being predictable. Watchtower was designed around four rules:
Each rule removes a way for an unattended script to quietly stop being useful.
Few moving parts, all of them boring and well understood, running on a small cloud server.
A simple loop with branching logic for expired sessions and repeat items.
Anything that runs without a person watching fails differently from a script you run by hand. These behaviours are what let Watchtower keep going.
Watchtower is a Python and Playwright monitor, deployed as a systemd service on Oracle Cloud Infrastructure, that watches a login-protected web portal and emails me when a new item appears.
It replaces the habit of refreshing a page all day. Items that appear without any notification are caught and reported exactly once each, so nobody has to keep checking.
It confirms the session is valid before every read and signs in again if it has expired, restarts the browser if it hangs, ignores items it has already reported, and runs as a systemd service so the operating system restarts it if the process dies. Every run is logged.
No. It only observes and notifies. What to do with an alert stays a human decision.
I specified the behaviour and used AI-assisted development to generate the code, then read, modified and debugged it myself. Credentials are kept in environment variables rather than in the code.