# AyCode.Blazor — Domain Rules > This is the **single source of truth** for Blazor/MAUI UI domain rules. Do not duplicate these elsewhere. > For core framework rules see: `../AyCode.Core/.github/copilot-instructions.md` > For detailed docs see: `README.md` → `docs/` ## DevExpress Components 1. **DevExpress Blazor 25.1.3** — always use `DxGrid`, `DxFormLayout`, etc. Do NOT mix with generic Blazor component libraries. 2. **Grid system** uses `AcSignalRDataSource` for real-time data — grids fetch data via SignalR, not REST. 3. **CardView components** wrap DevExpress grids with card-style layout for mobile-friendly display. ## Architecture 4. **Blazor.Components** is the main UI library — both Blazor Server and MAUI Hybrid consume it. 5. **Blazor.Models** = shared view models (client + server). **Blazor.Models.Server** = server-only scaffolding. 6. **MAUI.Core** targets Android (API 33+), iOS (15.0+), Windows (10.0.19041+) via platform folders. 7. **Controllers** project is scaffolding — do not add business logic here. ## Serialization in UI 8. SignalR uses **AcBinaryHubProtocol** (custom binary) — not the default JSON protocol. 9. Grid filters use **AcExpressionNode** serialization — LINQ expressions are serialized and sent to server. ## Conventions 10. Do not suggest removal/rollback as a solution — find a fix for the problem. 11. All DLL references to AyCode.Core projects are via `DllReference` (not ProjectReference) — this is intentional. 12. **No redundant code** — before writing new logic, search for existing methods. Reuse or extract shared logic into smaller methods rather than duplicating. 13. **Keep all .md files in sync** — when you modify code, update any affected .md file in the same area. If you already read an .md file during your work and notice it contradicts the current code, fix the discrepancy — but do NOT proactively scan or open .md files just to check for issues. 14. **Documentation layering** — write `.md` documentation at the **defining layer** (where the code lives). Higher-layer `.md` files reference the base docs (e.g. `see AyCode.Core/docs/SIGNALR.md`) and document only project-specific overrides or extensions. Never duplicate base-layer descriptions in consumer-level docs. ## Related Solutions 15. **AyCode.Core** solution (`../AyCode.Core/AyCode.Core.sln`) contains all core framework code (SignalR, serialization, data sources, base classes, interfaces). When a type is referenced in this Blazor solution but not defined here (e.g. `AcSignalRDataSource`, `AcBinaryHubProtocol`, `IId`, `AcObservableCollection`, `AcLoggerBase`), look it up in AyCode.Core source. 16. For AyCode.Core domain rules see: `../AyCode.Core/.github/copilot-instructions.md`