Skip to content

Latest commit

 

History

105 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MobWxApp

The purpose of this app is to leverage the NOAA/NWS API to acquire current and forecast weather information using REST API calls.

Goals

  • Build a multi-platform app for Windows and Android
  • Learn how to use .NET MAUI 8 w/ .NET 8
  • Implement MVVM, DI, and Async programming patterns
  • Ensure stable app execution and operation
  • Learn how to use the NOAA/NWS API
  • Deploy a functional app via the Android Play ecosystem

Project Status

As of 17-June-2024:

  • Changing location properly updates Current and Forecast pages.
  • Forecast page now loads weather icons for each day.
  • Bumped version in About page.

As of 6-June-2024:

  • Enabled GH Build Action for Windows.
  • Updated accessibility, replacing placeholders with labels in UI.
  • Bump dependecies versions, app version.

As of 5-Feb-2024:

  • Fixed some display and layout bugs.
  • Tested Release Deployment for Windows and Android.
  • Development on this project will be on hold for a few weeks while working on other committments.

As of 26-Jan-2024:

  • Implemented Forecast view that displays 7-day forecast data.
  • Leverage CollectionView and templating to bind, display, and style the data.

As of 17-Jan-2024:

  • Refactored navigation to use Flyout, allowing user to select various pages in the app.
  • Updated Location discovery and UI validation.
  • Reworked filenames and MVVM structure a bit to reduce confusion.
  • Enable user to enter lat/lon even if the device already acquired Location from its sensors.
  • Enabled rotation support for Android.

As of 6-Dec-2023:

  • Updated About page, including hyperlinks to project and dev sites.
  • Added ScrollView to About page.

As of 27-Dec-2023:

  • Initial development of TabBar navigation.
  • Added placeholder About page.
  • Added TabBar icons (more to come).

As of 16-Dec-2023:

  • Added contrasting color palettes to UI style resources.
  • Platform light/dark modes automatically supported, applied to UI.
  • Added custom AppIcon.
  • Changed Windows platform App size to something more reasonable. 😃

As of 12-Dec-2023:

  • In development.
  • Android location services utilized to gather device location.

As of 5-Dec-2023:

  • The app is currently in development.
  • App will return current weather information for a location (Android: detected or input; Windows: user-input only).

Implemented Features

Latest-to-oldest:

  • Separate Current Conditions from 7-day Forecast data in the UI.
  • Design 7-day forecast page that consumes current location and diplays weather data.
  • Collections will stay in the app to support observable data binding, ensureing up-to-date data and responsive UI.
  • Part of development and testing now includes Ad-hoc publishing APK for side-load testing on physical Android devices.
  • Update UI to be responsive to window size, device orientation, and device type.
  • Dedicated function to get Android Location on startup.
  • Flyout navigation is overall navigation paradigm.
  • AppIcon for Android and Windows.
  • Add an about page to show app, developer information.
  • Update UI with color palette.
  • Update UI light/dark scheme (follows platform scheme).
  • Enable just-in-time downloading the NWS "Icon" image (current conditions image) when current condition page is loaded (right now it is a placeholder).
  • Get location by device location (Android only).
  • Get location by user input.
  • Get weather forecast for location.
  • Show current weather conditions.

Remaining Work To Be Done

In No particular order:

  • Fix ObservableObject implementation to simplify code and ensure proper bindings.
  • Implement a local database e.g. SqlLite to store data.
  • Implement NWS/NOAA API cache-friendly code (currently the code ignores caching requests).
  • Quick recall of forecast weather data periods e.g. tomorrow, tomorrow night, etc.
  • Exception handling: Catch FeatureNotSupported, FeatureNotEnabled, and Permission Exception types.
  • Various refactorings to improve code quality and readability.

Stretch Goals

  • Current Warnings and Watches alert on Current Conditions page with click to detailed information.
  • Sunset and Sunrise times e.g. Civil Twilight etc.
  • Moon phase, current and future significant dates.
  • A settings page to allow user to set preferences such as light/dark mode, location(s).

Prerequisites

Android install and run:

  • Android 12 (API 32) or newer
  • Future: Google Play account to install from Play Store
  • Ability to side-load APK files for non-Store builds

Windows install and run:

  • Windows 10 or 11
  • DotNET 8.0 or newer SDK and RunTime
  • Ability and local rights to install MSIX files

Dev and Build:

  • Windows 10 or 11
  • Visual Studio 2022 (v17.10 or newer)
  • DotNet 8.0 SDK
  • Android Emulator(s) with Android 12.1+ and API 32 or newer and at least 1 GB of memory

Credits and References

About

Mobile Weather App. Leverages NOAA/NWS API for data and .NET MAUI for multi-platform compatibility. Currently targeting Windows and Android.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages