Skip to content

Add MicroStack admin UI with request/resource APIs - #15

Merged
damianh merged 9 commits into
mainfrom
damianh-add-ui-to-microstack
Sep 13, 2026
Merged

damianh merged 9 commits into
mainfrom
damianh-add-ui-to-microstack

Conversation

@damianh

@damianh damianh commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • add a new Blazor WebAssembly admin client (MicroStack.UI.Client) and host (MicroStack.UI) served on a dedicated UI port
  • add backend admin APIs for request logging and resource exploration
  • implement resource providers for SQS, S3, and DynamoDB to expose names/ARNs and key attributes
  • wire solution, container configuration, and docs for dual-port runtime (4566 API + 4567 UI)

Backend changes

  • add RequestLog ring buffer + RequestLogMiddleware
  • add GET /_microstack/requests and DELETE /_microstack/requests
  • add IResourceProvider, ResourceSummary, ResourceItem
  • add GET /_microstack/resources
  • add MICROSTACK_UI_PORT option and startup logging
  • register new AOT JSON types in MicroStackJsonContext

UI changes

  • Dashboard page for health/service status/resource counts
  • Request Log page with polling, pause/resume, row limits, and clear action
  • Resource Explorer page grouped by service
  • typed API client with configurable ApiBaseUrl

Validation

  • dotnet build src/MicroStack/MicroStack.csproj
  • dotnet build src/MicroStack.UI/MicroStack.UI.csproj
  • dotnet test tests/MicroStack.Tests/MicroStack.Tests.csproj --filter-not-class MicroStack.Tests.ContainerSmokeTests

Notes

  • full solution test restore still hits existing MessagePack vulnerability-as-error failures in Aspire projects
  • container smoke test requires Linux NativeAOT toolchain support in the environment

@coldtea-pr-lens

coldtea-pr-lens Bot commented Sep 13, 2026

Copy link
Copy Markdown

◈ PR Lens

🟢 +10 new · 🟠 ~13 changed · 🔴 -0 removed · 2 flows · 45 files · commit 34a8292


Architecture

Architecture diagram for damianh/microstack at 34a8292

23 components touched across 6 lanes.

Open the interactive canvas


Inside the changed components — 2 views

Component view — Admin API & Live Engine

Internal modules handling admin inspection routes, event streaming, request logging, and relationship resolution.

Architecture view of Component view — Admin API & Live Engine in damianh/microstack

Component view — Resource Explorer UI

Blazor WebAssembly client architecture managing views, live event coordination, API client, and inspector components.

Architecture view of Component view — Resource Explorer UI in damianh/microstack

Data flow

Data flow diagram for damianh/microstack at 34a8292

Live change event streaming · Inspecting resource details and connections

Open the interactive canvas


The other flows — 1 sequence

Inspecting resource details and connections

Sequence diagram of Inspecting resource details and connections in damianh/microstack

View

  • Architecture lens
  • Data flow lens
  • Expand every detail

Tip

The CLI's render reads .github/pr-lens.yml and applies your renames, exclusions and lane pins at draw time.

🪧 More tips
  • Run npx skills add coldteadotai/pr-lens, then tell your coding agent: "Diagram the change you just made with PR Lens and attach it to the pull request."
  • Run npx @coldtea/pr-lens-cli analyze --base origin/main on a branch, then npx @coldtea/pr-lens-cli render .pr-lens/graph.json. Same lenses, your own model key, before the pull request exists.
  • Untick Architecture lens or Data flow lens under View to hide a diagram, or tick Expand every detail to open every section. The comment redraws in a few seconds.
  • Click the link under each diagram to open it on a canvas you can zoom, pan and step through.
  • The diagrams are links. Click one to open it on the canvas, then press W or click play to walk through the change.
  • Open a diagram on the canvas, then press W or click play to walk through the change one step at a time.
  • Set github.comment.collapsed: true in .github/pr-lens.yml to fold the comment behind one View architecture and data flow row. Drawing still runs on every push.
  • Add .github/workflows/pr-lens.yml with coldteadotai/pr-lens/packages/action@v0 and your model provider's key as its api-key to run PR Lens from your own CI. Any /chat/completions endpoint works.
  • Push a commit and the comment redraws for the new head. A slow older run never overwrites a newer one.
  • Switch GitHub to dark mode and the diagrams follow. The moving dots are this pull request's data in motion.

Thanks for using PR Lens! It's built by Coldtea, free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

damianh and others added 8 commits September 13, 2026 19:32
Add a Blazor-based admin dashboard on a dedicated port with dashboard, request log, and resource explorer views. Extend the MicroStack backend with request log and resource APIs, wire resource providers for SQS/S3/DynamoDB, and update solution/docker wiring to run UI and API together.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve the approved service-first prototype and theme as a design reference. Add read-only providers, account switching, bounded previews, and explicit sensitive-value reveal across the admin UI.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Publish the WebAssembly client independently from the native Linux RID to avoid resolving a nonexistent Mono runtime pack. Remove the UI sidecar and serve its assets from the API process instead.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the client in the normal static asset graph, but exclude it when
restore or publish supplies a native RID. Restore uses RuntimeIdentifiers;
publish uses RuntimeIdentifier.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Restore ignores project-reference property removal. Pin both RID
properties locally in the browser project, and keep the asset reference
for normal builds even when the SDK infers runtime identifiers.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Docker's forwarded port can reset or close connections before Kestrel
listens. Bound the health readiness retries and each request; retain
all smoke assertions and fail if the service never becomes ready.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Expose retained metadata and configured relationships without mutating resources. Discover known accounts and preserve explorer scope through instance-wide navigation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Main keys queues by name rather than persisted URLs. Derive admin and legacy inspection URLs using the configured endpoint, preserving request-aware URLs for AWS calls.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@damianh
damianh force-pushed the damianh-add-ui-to-microstack branch from a074547 to 93be64b Compare September 13, 2026 17:47
Refresh visible data through SSE invalidations and reconciliation.
Keep pause, retry, account isolation, and explicit secret reveal.
Load complete lists and consolidate header and resource controls.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@damianh
damianh merged commit 7f6aee1 into main Sep 13, 2026
2 checks passed
@damianh
damianh deleted the damianh-add-ui-to-microstack branch September 15, 2026 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant