WPF weather app using MahApps Metro and the Accuweather API. Support for light/dark modes and custom accent colors. Demo mode data is provided via Entity Framework Core from a Sqlite database with randomized results. Testing ongoing with nUnit. Prototyped with Adobe XD.
- Demo mode: On the Settings page, set the Demo Mode toggle switch to "On" to enable Demo mode. In this mode, randomized data will be returned for location search queries on the Weather page.
- API mode: On the Settings page, with the Demo Mode toggle switch to "Off", enter an AccuWeather API key to return API results to location search queries on the Weather page.
The app uses Service Oriented Architecture (SOA) to provide the weather service via a service bus, which is accessed primarily by the weather ViewModel - the Model-View-ViewModel (#MVVM) approach is used to maintain a separation of concerns between frontend and backend code. The weather service contains methods for asynchronously getting HTTP responses from calls to the Location, Current Conditions, and Forecast AccuWeather APIs; the results from these methods are then processed by the weather ViewModel, which in turn exposes the data to the weather page View.