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.
|
||
|---|---|---|
| .claude | ||
| .cr/personal/FavoritesList | ||
| .github | ||
| FruitBank.Common | ||
| FruitBank.Common.Server | ||
| FruitBankHybrid | ||
| FruitBankHybrid.Shared | ||
| FruitBankHybrid.Shared.Common | ||
| FruitBankHybrid.Shared.Tests | ||
| FruitBankHybrid.Web | ||
| FruitBankHybrid.Web.Client | ||
| docs | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| FruitBankHybrid.sln | ||
| README.md | ||
| SqlSchemaCompare_Dev_to_Prod.scmp | ||
| test_toon_businessrule.csx | ||
| tmpclaude-bf6e-cwd | ||
README.md
FruitBankHybridApp
nopCommerce plugin for FruitBank, a fruit & vegetable wholesaler. Manages supplier inbound delivery (Shipping), outgoing orders (Order), warehouse weighing, and inventory stocktaking. Runs as Blazor Server, Blazor WASM, and MAUI Hybrid (Android/iOS/Windows).
nopCommerce 4.80.9 requires it
LLM Context
Domain rules and critical pitfalls live in a single file: .github/copilot-instructions.md
| Tool | Auto-loaded | Action needed |
|---|---|---|
| GitHub Copilot | ✅ copilot-instructions.md |
None |
| Claude Code | ✅ CLAUDE.md → references above |
None |
| Cursor / Windsurf | ✅ README.md |
Read copilot-instructions.md via @file |
Detailed docs: docs/ — GLOSSARY.md, ARCHITECTURE.md, CONVENTIONS.md. Domain model schema (TOON) lives in the plugin: NopCommerce.Common/4.70/Plugins/Nop.Plugin.Misc.AIPlugin/docs/SCHEMA.md
Solution Structure
| Project | TFM | Purpose | README |
|---|---|---|---|
FruitBank.Common |
net9.0 | Shared domain: entities, DTOs, interfaces, SignalR tags, measurement helpers | README |
FruitBank.Common.Server |
net9.0 | Server-side: SignalR hubs, broadcast service, logging, nopCommerce integration | README |
FruitBankHybrid.Shared |
net10.0 | Blazor UI: pages, grids, SignalR client, measurement service, layout | README |
FruitBankHybrid.Shared.Common |
net10.0 | Shared common library (placeholder) | README |
FruitBankHybrid |
net10.0‑android/ios/win | MAUI Hybrid app: Android, iOS, Windows | README |
FruitBankHybrid.Web |
net10.0 | Blazor Server host with SignalR hubs | README |
FruitBankHybrid.Web.Client |
net10.0 | Blazor WebAssembly client | README |
Test Projects
| Project | TFM | Purpose | README |
|---|---|---|---|
FruitBankHybrid.Shared.Tests |
net10.0 | Integration + serialization tests (SignalR, JSON, Toon, bunit) | README |
External Dependencies
All projects reference these via DLL (not ProjectReference). Full source is available in sibling directories:
| Repo | Path | Key Docs |
|---|---|---|
| AyCode.Core (net9.0) | ../../../Aycode/Source/AyCode.Core/ |
copilot-instructions, ARCHITECTURE |
| AyCode.Blazor (net10.0) | ../../../Aycode/Source/AyCode.Blazor/ |
copilot-instructions, MGGRID |
| Mango.Nop Libraries (net9.0) | ../NopCommerce.Common/4.70/Libraries/ |
copilot-instructions, ARCHITECTURE |
| FruitBank Plugin (net9.0) | ../NopCommerce.Common/4.70/Plugins/Nop.Plugin.Misc.AIPlugin/ |
README |