{"id":24075484,"url":"https://github.com/afranche7/airpollutiontracker","last_synced_at":"2025-04-30T05:04:10.530Z","repository":{"id":270038269,"uuid":"909134791","full_name":"afranche7/AirPollutionTracker","owner":"afranche7","description":"A Celery backend application using Redis as a broker to periodically fetch air quality data (AQI and pollutant concentrations) from the OpenWeatherMap API for specified coordinates. The data is stored as time series in Redis and visualized on a Grafana dashboard via Prometheus.","archived":false,"fork":false,"pushed_at":"2025-01-07T04:16:00.000Z","size":33,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T05:04:08.830Z","etag":null,"topics":["celery","celery-redis","celery-task","celerybeat","docker","docker-compose","grafana","grafana-dashboard","prometheus","prometheus-client","prometheus-metrics","python","redis","redis-cache","redistimeseries"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/afranche7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-27T20:26:20.000Z","updated_at":"2025-01-07T23:02:48.000Z","dependencies_parsed_at":"2024-12-27T23:36:52.711Z","dependency_job_id":"e6fbfe4b-f671-4a18-b6e4-2886cda15595","html_url":"https://github.com/afranche7/AirPollutionTracker","commit_stats":null,"previous_names":["afranche7/air-pollution-tracker","afranche7/airpollutiontracker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afranche7%2FAirPollutionTracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afranche7%2FAirPollutionTracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afranche7%2FAirPollutionTracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afranche7%2FAirPollutionTracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/afranche7","download_url":"https://codeload.github.com/afranche7/AirPollutionTracker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251644843,"owners_count":21620632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","celery-redis","celery-task","celerybeat","docker","docker-compose","grafana","grafana-dashboard","prometheus","prometheus-client","prometheus-metrics","python","redis","redis-cache","redistimeseries"],"created_at":"2025-01-09T19:05:11.700Z","updated_at":"2025-04-30T05:04:10.524Z","avatar_url":"https://github.com/afranche7.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Air Pollution Tracker\n\n# Overview\nCelery backend application, using Redis as a broker, that will periodically fetch the current air quality (index and concentrations of pollutants) from the \nopenweathermap API at specified latitude and longitude. \n\nAfter fetching the pollution data, it is then stored as time series data in the same Redis instance used by Celery.\n\nThe time series data from Redis is then displayed in a Grafana dashboard using Prometheus as a data source.\n\n![Capture2](https://github.com/user-attachments/assets/b1c21301-65ad-493d-be34-dde79139e032)\n\n## How to get started\n1. Create account and get API key from https://openweathermap.org/ (verify email and there might be a short delay for API key to become active)\n2. Create .env file in the root of the project with variables LATITUDE, LONGITUDE, API_KEY, INTERVAL_IN_SECONDS\n```\nLATITUDE=40.7128\nLONGITUDE=-74.0060\nAPI_KEY=\u003cAPI KEY HERE\u003e\nINTERVAL_IN_SECONDS=10\n```\n3. Optionally you can add to .env file variables FROM_EMAIL, FROM_PASSWORD, TO_EMAIL to create email alerts for air quality index above 4 using smtp.gmail.com\n4. 'Run docker-compose build' command in the root of the project\n5. 'Run docker-compose up' command in the root of the project\n6. Navigate to http://localhost:3000/ to consult the Grafana dashboard.\n   - Username and password are 'admin'\n   - Skip change password step\n   - Navigate to Air Pollution Tracker under dashboards section\n\n## OpenWeather Pollution API Documentation\nhttps://openweathermap.org/api/air-pollution\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafranche7%2Fairpollutiontracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fafranche7%2Fairpollutiontracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafranche7%2Fairpollutiontracker/lists"}