A highly-customizable, free-to-host static status page and monitoring system built with Node.js, GitHub Actions, and a Vanilla HTML/CSS/JS frontend.
Uptime Lens checks the status of your core cloud and developer services every 10 minutes and automatically sends a Telegram alert the moment an outage or degradation is detected. The beautiful front-end dashboard updates automatically by fetching the latest status data.
- Cost-Free Hosting: Uses GitHub Actions to run the periodic monitoring scripts and GitHub Pages to host the beautiful frontend dashboard for $0/month.
- Instant Telegram Alerts: Be the first to know when a service goes down via instant push notifications to your Telegram channel.
- Premium UI: The status dashboard features a modern, dark-mode, glassmorphism design with responsive skeleton loaders and smooth micro-animations.
- Historical Data: Maintains a history of up to 100 recent status changes per service.
- Modular Monitors: Adding a new service checker takes only a few lines of code in the
scripts/monitorsfolder.
- AWS
- Azure
- Google Cloud Platform (GCP)
- Oracle Cloud Infrastructure (OCI)
- Supabase
- GitHub
- GitLab
- Open Telegram and search for
@BotFather. - Send
/newbotand follow the Prompts to get your Bot Token. - Create a New Telegram Channel for your alerts.
- Add your newly created Bot as an Administrator in your given Channel.
- Get your Channel ID (it typically looks like
-100...).
Create a new GitHub Repository for your status page and copy these files into it.
git clone https://github.com/your-username/uptime-lens.git
cd uptime-lens
npm installGo to your repository settings on GitHub -> Secrets and variables -> Actions.
Add the following Repository Secrets:
TELEGRAM_BOT_TOKEN: Your bot token from BotFather.TELEGRAM_CHAT_ID: The ID of your Telegram Channel.
Go to your repository settings -> Pages. Under "Build and deployment", change the Source to GitHub Actions.
Push your repository. The GitHub Actions workflows will automatically trigger:
uptime.ymlwill run the first check, populate yourdata/status.jsonfile, and commit/push the status history back to your repository.pages.ymlwill deploy your live beautiful status dashboard.
If you want to test or add new monitors locally, use the .env file.
# 1. Rename .env.example to .env
cp .env.example .env
# 2. Add your Telegram credentials to .env
# TELEGRAM_BOT_TOKEN=12345:xxxxxx
# TELEGRAM_CHAT_ID=-100xxxxxx
# 3. Run the monitor script
node scripts/monitor.js- Create a new file in
scripts/monitors/my_service.jsthat exports a check function returning an object withstatus(UP, DEGRADED, DOWN) and adescription. - Import your module in
scripts/monitor.js. - Add it to the
monitorsobject.