Skip to content

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

License

Notifications You must be signed in to change notification settings

nojronatron/MobWxApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

License

Stars

Watchers

Forks

Languages