{"id":48617925,"url":"https://github.com/hsleonis/weather_kafka_streamlit","last_synced_at":"2026-04-09T02:13:08.874Z","repository":{"id":210286499,"uuid":"726207361","full_name":"hsleonis/weather_kafka_streamlit","owner":"hsleonis","description":"Real-time weather data from Accuweather APIs using Kafka + Streamlit.","archived":false,"fork":false,"pushed_at":"2023-12-01T20:18:21.000Z","size":608,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-01-29T06:56:41.444Z","etag":null,"topics":["api-rest","dashboard","data-science","kafka","messsaging","real-time","streamlit","weather"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hsleonis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-12-01T19:10:01.000Z","updated_at":"2023-12-01T22:18:43.000Z","dependencies_parsed_at":"2023-12-01T20:25:51.229Z","dependency_job_id":"eeb1b9a4-5d77-46ec-9a98-57e05e4eedb4","html_url":"https://github.com/hsleonis/weather_kafka_streamlit","commit_stats":null,"previous_names":["hsleonis/weather_kafka_streamlit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hsleonis/weather_kafka_streamlit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsleonis%2Fweather_kafka_streamlit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsleonis%2Fweather_kafka_streamlit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsleonis%2Fweather_kafka_streamlit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsleonis%2Fweather_kafka_streamlit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hsleonis","download_url":"https://codeload.github.com/hsleonis/weather_kafka_streamlit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsleonis%2Fweather_kafka_streamlit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31581892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api-rest","dashboard","data-science","kafka","messsaging","real-time","streamlit","weather"],"created_at":"2026-04-09T02:13:08.743Z","updated_at":"2026-04-09T02:13:08.815Z","avatar_url":"https://github.com/hsleonis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"images/logo.png\" width=\"200px\" /\u003e\n\n# Real-time Weather Reporting App\nReal-time weather data from Accuweather APIs using Kafka + Streamlit dashboards.\n\n**A simple Python app to display the workflows of Kafka with easy-to-use Streamlit UI.**\n\n**Kafka** is a distributed publish-subscribe messaging system that maintains feeds of messages in partitioned and replicated topics. In the simplest way there are three players in the Kafka ecosystem: producers, topics (run by brokers) and consumers.\n\n**Producers** produce messages to a topic. It is possible to attach a key to each message, in which case the producer guarantees that all messages with the same key will arrive to the same partition. **Topics** are logs that receive data from the producers and store them across their partitions. Producers always write new messages at the end of the log. In our example we made abstraction of the partitions, since we’re working locally.\n\n**Consumers** read the messages of a set of partitions of a topic of their choice at their own pace. If the consumer is part of a consumer group, i.e. a group of consumers subscribed to the same topic, they can commit their offset. This can be important if a topic is needed to consume in parallel with different consumers.\n\n## Producer Dashboard\nThe producer dashboard takes a location name as input, searches **Accuweather API** and receives current Weather data from it's APIs. Then, the **Kafka Producer** publises the Weather data to a Kafka topic.\n\u003cimg src=\"images/PRODUCER.png\"\u003e\n\n## Consumer Dashboard\nThe consumer receives the published Weather data from the same Kafka topic and displayes in the consumer dashboard.\n\u003cimg src=\"images/CONSUMER.png\"\u003e\n\n## How to use\n1. Download the latest Kafka release and extract it: https://www.apache.org/dyn/closer.cgi?path=/kafka/3.6.0/kafka_2.13-3.6.0.tgz\n2. Install dependencies with:\n```python\npip -r requirements.txt\n```\n3. Goto Kafka directory, to work in local machine, make changes in `config/server.properties` file.\nSet `advertised.listeners` to `PLAINTEXT://localhost:9092`.\n4. Run the following commands in order to start all services in the correct order. Run **Zookeeper** first:\n```python\nbin/zookeeper-server-start.sh config/zookeeper.properties\n```\n5. Open another terminal session and run to start **Kafka broker server**:\n```python\nbin/kafka-server-start.sh config/server.properties\n```\n6. Go to the app directory and create a `.env` file with following template:\n```python\nWEATHER_API_KEY = \"Accuweather API KEY\"\nKAFKA_BROKER = \"localhost:9092\"\nKAFKA_TOPIC = \"weather_data\"\nKAFKA_GROUP_ID = \"weather_consumer_group\"\n```\n7. Run producer dashboard:\n```python\nstreamlit run producer_app.py\n```\n8. Run consumer dashboard:\n```python\nstreamlit run consumer_app.py --server.port 8503\n```\n\nEnjoy!\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhsleonis%2Fweather_kafka_streamlit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhsleonis%2Fweather_kafka_streamlit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhsleonis%2Fweather_kafka_streamlit/lists"}