A Flask + MapLibre GL JS web application that tracks power outages across Port Moresby suburbs using an interactive map, automated data collection, analytics, and notification services.
The platform provides outage visibility through a dashboard, suburb-based search, status filtering, user reporting, and an administration system for managing verified outage information.
View the deployed application:
https://power-outage-tracker-3ej2.onrender.com
This project was developed to demonstrate real-world infrastructure monitoring concepts by combining:
- Automated data collection
- Database management
- Web application development
- API integration
- Background task scheduling
- Notification systems
- Containerized deployment
The goal is to provide a centralized platform for monitoring and managing power outage information across Port Moresby suburbs.
-
Interactive outage map using MapLibre GL JS
-
Colour-coded outage markers by suburb status
-
Search and filtering by outage type:
- Active
- Planned
- Restored
- Emergency
-
Real-time statistics dashboard
- Browser-based web scraper using Playwright
- Automated background updates using APScheduler
- SQLite database storage with duplicate prevention
- Automated outage status tracking
- User registration and login
- Favourite suburb subscriptions
- Personal outage dashboard
- Public outage reporting system
- Optional photo and location reporting
Outages follow a verification workflow:
Reported
↓
Under Review
↓
Verified
↓
Active
↓
Restored
Confidence scoring combines:
- Number of reports
- Administrative verification
- Historical outage information
Supports:
- Email notifications
- SMS notifications
- Suburb-based alerts
Users can subscribe to receive updates when outages are created or restored.
- Weather data collection using OpenWeather
- Weather conditions stored with outage events
- Weather correlation analysis for identifying possible outage patterns
Provides:
- Total outages
- Active outages
- Planned outages
- Emergency outages
- Most affected suburbs
- Restoration time analysis
- Peak outage periods
- Python
- Flask
- SQLite
- REST API development
- HTML
- CSS
- JavaScript
- MapLibre GL JS
- OpenFreeMap
- Playwright
- APScheduler
- Docker
- Environment-based configuration
- Git/GitHub version control
- OpenWeather API
- LocationIQ Geocoding API
- Email notification services
- SMS notification services
git clone https://github.com/Thafundraiser007/Power-Outage-Tracker.gitNavigate into the project:
cd Power-Outage-TrackerWindows:
python -m venv venv
venv\Scripts\activateLinux/macOS:
python -m venv venv
source venv/bin/activatepip install -r requirements.txtInstall Playwright browser:
playwright install chromiumCopy the example configuration:
cp .env.example .envAdd your required API keys and configuration values.
Never upload .env files containing real credentials.
python app.pyOpen:
http://127.0.0.1:5000
Power-Outage-Tracker/
├── app.py Flask application and API routes
├── auth.py User authentication
├── config.py Application configuration
├── database.py SQLite database management
├── scraper.py Automated outage data collection
├── scheduler.py Background update scheduler
├── notifications.py Email and SMS notification system
├── weather.py Weather API integration
│
├── templates/ HTML templates
├── static/ CSS, JavaScript and frontend assets
│
├── Dockerfile Container deployment configuration
├── requirements.txt Python dependencies
├── .env.example Environment variable template
├── README.md Documentation
└── .gitignore Git exclusions
Build container:
docker build -t outage-tracker .Run:
docker run -p 5000:5000 --env-file .env outage-trackerThe included Dockerfile provides a consistent deployment environment with required dependencies.
Add screenshots here:
Example:
screenshots/
├── dashboard.png
├── map.png
└── admin.png
Then display them:

This project demonstrates practical experience with:
- Python application development
- Network monitoring concepts
- Infrastructure automation
- Database management
- API integration
- Data processing
- Web services
- Background task scheduling
- Docker containerization
- Git version control
- System notification workflows
Possible future enhancements:
- Real-time outage API integration
- Historical outage analytics graphs
- Mobile application support
- Automated testing framework
- Public API documentation
- PostgreSQL migration for larger deployments
- Cloud deployment with monitoring and logging
Jamill Naipao
Power Outage Tracker Built as a portfolio project demonstrating software development, automation, and infrastructure monitoring concepts.