Development¶
Adding a micro-frontend link¶
No code change is required to surface a new MFE - add a MicroFrontendOptions entry to the "Shell" configuration section. NavMenu.razor binds to IOptions<ShellOptions> and renders the link from Name/Path.
To render MFE content, add a page (e.g. MfeX.razor) that loads or proxies the MFE's BaseUrl, following the placeholder Mfe1.razor / Mfe2.razor pattern.
Working with Shared.Contracts¶
Place cross-MFE DTOs and events in Shared.Contracts so the shell and downstream MFEs share types. Existing buckets: Identity/, Events/, Common/, Extensions/ProblemDetails/. Use ProblemDetailsHelper for consistent error payloads and MfeEvent / NavigationRequestedEvent for cross-component messaging.
Render model¶
This template uses the modern MapRazorComponents<App>() + AddInteractiveServerComponents() hosting model. Keep new interactive components compatible with server interactivity rather than the legacy _Host page approach.
Testing¶
<Name>.UnitTests (MSTest + bUnit). ShellOptionsRegistrationTests validates that AddShellOptions binds configuration (test settings come from appsettings.UnitTests.json). Add binding/nav tests as you extend ShellOptions.