Introduced IAppTitleService for platform-agnostic environment badge in the app title ("[PROD]" or "[DEV] FruitBank"), with implementations for Web (document.title), MAUI (window title), and server (no-op). Registered the service per platform in DI. MainLayout now updates the title reactively on environment changes via FruitBankConstClient.IsProdChanged. Improved event handling and prevented redundant environment hydration calls. No business logic affected; changes are UI/infrastructure only.
|
||
|---|---|---|
| .. | ||
| Components | ||
| Databases | ||
| Extensions | ||
| Layout | ||
| Models | ||
| Pages | ||
| Services | ||
| wwwroot | ||
| FruitBankHybrid.Shared.csproj | ||
| README.md | ||
| Routes.razor | ||
| _Imports.razor | ||
| appsettings.json | ||
README.md
FruitBankHybrid.Shared
@project { type = "product" own-dep-projects = [ "AyCode.Core, AyCode.Entities, AyCode.Interfaces, AyCode.Models, AyCode.Services, AyCode.Services.Server, AyCode.Utils (in AyCode.Core repo)", "AyCode.Blazor.Components (in AyCode.Blazor repo)", "Mango.Nop.Core (in Mango.Nop Libraries repo)" ] }
Main Blazor UI library shared across all three deployment targets (Server, WASM, MAUI). Contains pages, DevExpress grid components, SignalR client, measurement service, and layout.
Folder Structure
| Folder | Purpose |
|---|---|
Components/ |
DevExpress grid wrappers, pallet components, notifications |
Pages/ |
Routed pages: Login, ShippingsAdmin, OrdersAdmin, MeasuringIn/Out, StockTaking |
Services/ |
SignalR client, measurement service, form factor, loggers |
Layout/ |
MainLayout with navigation, auto-login, toast notifications |
Models/ |
Date selector model for measuring pages |
Extensions/ |
DevExpress MessageBox/ConfirmBox helpers |
Databases/ |
Client-side ConcurrentDictionary table cache |
Key Files (Root)
_Imports.razor— Global Blazor imports.Routes.razor— Route definitions.appsettings.json— Canonical configuration source for all three hosts (Web, Web.Client, MAUI). Edit ONLY here. Pull mechanism per host: seedocs/ARCHITECTURE.md(in repo root) → "Shared Configuration".
Target Framework
.NET 10.0 with AOT compilation and WASM IL stripping enabled.