.NET 10 upgrade and Aspire AppHost with WireMock-mocked Sessionize#41
Merged
.NET 10 upgrade and Aspire AppHost with WireMock-mocked Sessionize#41
Conversation
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
- Bump all projects to net10.0; update Microsoft.* packages to 10.0.7, Swashbuckle to 10.1.7, Fluxor to 6.9.0, MudBlazor to 9.4.0; pin SDK via global.json. Includes the necessary code changes for MudBlazor 9 (IMudDialogInstance, generic MudList/MudListItem/MudChip, ShowAsync, GetSystemDarkModeAsync) and the Fluxor 6 ReduxDevTools namespace move. - Consolidate three .sln files into a single root PocketDDD.slnx and delete the obsolete duplicates. - Add PocketDDD.AppHost orchestrating SQL Server, the WebAPI, the Blazor client, and a WireMock-backed mock of the Sessionize API (static JSON mappings under PocketDDD.AppHost/Mocks). The WebAPI gets the Sessionize base URL via WithEnvironment; SessionizeService now reads it from configuration with the real URL as the fallback default. - Pin the WebAPI HTTPS endpoint to localhost:7081 and update the Blazor client's Development appsettings to call the real API instead of the in-memory fake backend. - Wire OpenTelemetry into the WebAPI (logs/metrics/traces, with AspNetCore/HttpClient/Runtime/SqlClient instrumentation) flowing to the Aspire dashboard via OTLP. - Apply EF migrations and seed an initial EventDetail row on Development startup so a fresh SQL Server container is usable end-to-end. - Fix a malformed `dotnetRunMessages` value in the Blazor client launchSettings.json that was causing the AppHost to crash on startup. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Follows the .NET Aspire EF Core migrations guidance: a separate PocketDDD.Server.MigrationService Worker project applies migrations and seeds the placeholder EventDetail row, then stops itself. The AppHost gates the WebAPI on `WaitForCompletion(migrations)` so the API only starts after migrations complete. Removes the dev-only migrate-and-seed block previously embedded in WebAPI/Program.cs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Copilot <copilot@github.com>
The Blazor client builds endpoints as relative URIs (e.g. "Registration/Login") against the configured apiUrl. Other environments end apiUrl with "/api/"; the Development value was missing it, so requests resolved to /Registration/Login instead of /api/Registration/Login and got a 404. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: slang25 <1341446+slang25@users.noreply.github.com>
Deployment fixes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
IMudDialogInstance, genericMudList/MudListItem/MudChip,ShowAsync,GetSystemDarkModeAsync) and the Fluxor 6 ReduxDevTools namespace move..slnfiles consolidated into a single rootPocketDDD.slnx.PocketDDD.AppHost/Mocks). WebAPI HTTPS pinned tolocalhost:7081so the Blazor WASM appsettings can target it deterministically; SessionizeService now reads its base URL from configuration with the real Sessionize URL as the fallback default.EventDetailrow run automatically on Development startup so a fresh SQL Server container is usable end-to-end.Test plan
dotnet build PocketDDD.slnxpasses (0 errors).aspire run(ordotnet run --project PocketDDD.AppHost) starts the dashboard, SQL Server container, WireMock, WebAPI, and Blazor dev server.https://localhost:7081/healthzreturns200 Healthy.POST https://localhost:7081/api/EventData/FetchLatestEventDatareturns the seeded mock data (4 timeslots, 2 tracks, 2 sessions).🤖 Generated with Claude Code