I always feel like somebody's watchin' me (Hee-hee-hee)
A website monitoring service that watches for changes in web pages and notifies you via email when they change. Named after Rockwell's 1984 hit song "Somebody's Watching Me" 🎵
- Monitor any number of websites
- Configurable check frequency per website (e.g., every 30 minutes, hourly, daily)
- Email notifications when changes are detected
- SQLite database for storing website hashes and change history
- RESTful API for managing monitored websites
- Clone the repository:
git clone git@github.com:ehamiter/rockwell.git
cd rockwell- Install dependencies:
npm install- Create a
rockwell.envfile with your email settings:
EMAIL_FROM=your-email@gmail.com
EMAIL_TO=your-email@gmail.com
EMAIL_APP_PASSWORD="your app password"- Set up as a systemd service (optional, for running as a daemon):
sudo nano /etc/systemd/system/rockwell.serviceAdd this content (adjust paths as needed):
[Unit]
Description=Rockwell Website Monitor
After=network.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/path/to/rockwell
EnvironmentFile=/path/to/rockwell/rockwell.env
Environment=NODE_ENV=production
ExecStart=/path/to/.nvm/versions/node/v22.11.0/bin/node src/index.js
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetThen enable and start the service:
sudo systemctl enable rockwell.service
sudo systemctl start rockwell.servicecurl -X POST http://localhost:3000/websites \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "checkFrequency": 1}'curl http://localhost:3000/websitescurl http://localhost:3000/changessqlite3 monitor.db
UPDATE websites SET check_frequency = 0.5 WHERE url LIKE '%example.com%';
.exitsudo journalctl -u rockwell.service -fRockwell fetches each monitored webpage at its configured interval, generates a hash of the content, and compares it with the previously stored hash. If they differ, it:
- Records the change in the database
- Sends an email notification
- Updates the stored hash
The check frequency is configurable per website (e.g., 0.5 for every 30 minutes, 1 for hourly, 24 for daily).
MIT