GeWetter

In this project, I developed a website that visualizes weather data collected on a daily basis. The data is sourced from the Deutsche Wetterdienst (DWD), which offers an official API providing both the current weather and a 9-day forecast. Each day, the server automatically retrieves and stores this forecast data in a database, building a historical dataset over time.

When a user accesses the website, they can select one of the 10,746 communities in Germany. Two parallel processes are triggered: first, the site fetches the most recent weather data and forecast directly from the DWD API, delivering a familiar real-time weather experience similar to standard weather apps. At the same time, a second request is sent to the server, which performs a live analysis of the historical data stored in the database.

This analysis allows users not only to view past weather patterns but also to evaluate the accuracy of previous forecasts. The result is a dual-purpose tool: it functions as a standard weather app while offering additional insights through dynamic graphs and visualizations that track how the weather and forecast accuracy have evolved over time.

The server-side infrastructure of the application is built using Flask, a lightweight and flexible Python web framework well-suited for handling web requests. Flask manages all incoming requests from the client, handles routing, and coordinates the communication between the front end and the local database.

The data analysis component is also implemented in Python, leveraging its powerful data-processing capabilities. Historical weather data stored in the database is accessed and queried using SQL, allowing for efficient data retrieval and filtering. Once the relevant data is retrieved, Python scripts perform real-time computations to analyze trends, calculate forecast accuracy over time, and prepare the data for visualization.

This architecture ensures that the server can deliver both real-time and historical insights efficiently. By combining Flask’s web capabilities with Python’s data-handling strengths and SQL’s precision in querying structured data, the system provides a responsive and scalable backend for the application.