Demo script
About 15 minutes. Run aspire run before starting and sign in once as the admin so the authenticator app is set up.
1. One AppHost, every resource
- Open
src/Digest.AppHost/AppHost.cs: SQL, Service Bus with its queue, Storage, the web app and the summarizer, each with its references. - In the dashboard, show the resources running, SQL Server and the Service Bus emulator in Docker, and the parameters (secrets are masked).
2. The app
- As the admin, open Invites and invite an email address. Show the invite arriving through Mailgun, follow the link and set a password.
- Toggle between the light and dark theme in the navbar.
- Paste a link, and watch the card go from
PendingtoSummarized. - Click a tag to filter the digest.
3. Follow one link through the system
- In the dashboard, open Traces and select the
web: POST /linksrow. One trace showsSubmitLink, the Service Bus send, the function run,FetchPage, the Claude call and the database update. - Open the Claude span to show the GenAI view with the prompt, the
<page>delimiters and the JSON reply. - From any span's
...menu, open Structured logs to see the logs for that trace. - Open Metrics:
links.submitted,links.summarized,links.processing.durationand token usage.
4. Failure paths
- Submit broken link: the card shows
Failedwith a reason, and the message completes. - Submit poison message: the logs show three attempts, then the message moves to the dead-letter queue.
5. Security
- Sign out and sign in with a wrong password, then with an unknown email: the message is the same.
- Show the response headers in the browser tools.
- Open
/adminas the admin: only the Links table, editable with the change logged. - Walk through the Security page.
6. Tests
dotnet test Digest.slnx
7. Azure
aspire deploy, then open the deployed app and the Aspire dashboard in Container Apps.- Show the resource group: Basic Service Bus, Basic registry, free-offer SQL and Key Vault.
- Finish with
aspire destroy.