The purpose of this app is to leverage the NOAA/NWS API to acquire current and forecast weather information using REST API calls.
- 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
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).
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.
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.
- 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).
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
- Various code snippets from Microsoft Learn .NET MAUI 8, November and December 2023.
- Various code snippets from MAUI Community Toolkit, December 2023.
- Splash screen images screen-snipped from NOAA GOES Image Viewer, 3-Dec-2023.
- Exclamation Mark icon from Icons8.
- Custom icons by me.