Phase 5 of the Blazor port. Depends on #7. Begin only after the web version is live and stable.
Goal
Stand up a MAUI app that hosts the same Razor components from FantasyFootball.Shared via BlazorWebView. Goal: one UI codebase, two hosts. Run alongside the existing MAUI XAML app until proven, then retire the XAML app.
Approach
Following the .NET 10 maui-blazor-web template structure:
- New project
src/FantasyFootball.UI.Hybrid/ — MAUI app, thin MainPage.xaml hosting <BlazorWebView> rooted at Shared.Routes.
- DI: registers MAUI-flavored implementations of any
Shared platform-abstraction interfaces (e.g., file picker, secure storage).
- SQLite
Repository continues to be the MAUI-side persistence (Blazor Shared components use whichever IRepository is registered).
Tasks
Out of scope
Removing the existing XAML FantasyFootball.UI project (deferred to a follow-up once Hybrid is proven on all targets).
Acceptance
- Hybrid app launches on Windows and Android.
- All pages from the web build render identically inside
BlazorWebView.
- Persistence uses SQLite (not LocalStorage) — data shared with the existing XAML app if both run on the same device.
Phase 5 of the Blazor port. Depends on #7. Begin only after the web version is live and stable.
Goal
Stand up a MAUI app that hosts the same Razor components from
FantasyFootball.SharedviaBlazorWebView. Goal: one UI codebase, two hosts. Run alongside the existing MAUI XAML app until proven, then retire the XAML app.Approach
Following the .NET 10
maui-blazor-webtemplate structure:src/FantasyFootball.UI.Hybrid/— MAUI app, thinMainPage.xamlhosting<BlazorWebView>rooted atShared.Routes.Sharedplatform-abstraction interfaces (e.g., file picker, secure storage).Repositorycontinues to be the MAUI-side persistence (BlazorSharedcomponents use whicheverIRepositoryis registered).Tasks
src/FantasyFootball.UI.Hybrid/FantasyFootball.UI.Hybrid.csprojfromdotnet new maui-blazortemplateFantasyFootball.SharedandFantasyFootballcoreCounter.razor,Weather.razor) — we useShared's routesMauiProgram.cs: register MAUI-side service implementations, including SQLiteRepositoryforIRepositorynet10.0-android,net10.0-windows10.0.19041.0, ideallynet10.0-ios)src/FantasyFootball.UI/(XAML) — separate follow-up issueOut of scope
Removing the existing XAML
FantasyFootball.UIproject (deferred to a follow-up once Hybrid is proven on all targets).Acceptance
BlazorWebView.