A real-time data processing system to monitor weather conditions and provide summarized insights using rollups and aggregates. The system utilizes data from the OpenWeatherMap API.
- The system continuously calls the OpenWeatherMap API at a configurable interval(e.g., every 5 minutes) to retrieve real-time weather data for the metros in India. (Delhi, Mumbai, Chennai, Bangalore, Kolkata, Hyderabad)
- Rolls up the weather data for each day
- Provides daily aggregates for Average temperature, Maximum temperature, Minimum temperature, Dominant weather condition
- Defines user-configurable thresholds for temperature or specific weather conditions (e.g., alert if temperature exceeds 35 degrees Celsius for two consecutive updates)
- Displays daily weather summaries, historical trends, triggered alerts along with temperature conversion between scales
- Defined test cases over System Setup, Data Retrieval, Temperature Conversion, Daily Weather Summary and Alerting Thresholds
- OpenWeatherMap API
- Python3
- HTML-CSS
- Flask + Gunicorn
- MySQL (SQLAlchemy + PyMySQL client + Cryptography)
- Pytest
- Docker (v27.3.1)
- DockerCompose (v2.29.7)
- Linux (Ubuntu 24.04)
git clone https://github.com/BelieveInTheLimitless/Real-Time-Data-Processing-System
cd Real-Time-Data-Processing-System
# Making sure MySQL is not interacting already
sudo systemctl stop mysql
docker compose up --build
# This step may take a while to complete the database setup, have some snacks handy with you :)
docker compose run test
# Note: The test does not cover app.py, app_frontend.py and database.py while being exhaustive for all scenarios
#open
http://127.0.0.1:5000/
# CTRL + C to stop the running container
docker compose down