01Blazor: Beginner to Intermediate · Part 1 Hello, Blazor: Set Up and Build Your First App Install the .NET SDK and build your first Blazor app. See it run in the browser, the start of a hands-on series from zero to intermediate. Jul 30, 2026 · 6 min read →
02Blazor: Beginner to Intermediate · Part 2 Anatomy of a Blazor Project: Every File Explained A guided tour of every file in a new Blazor project. Program.cs, App.razor, Routes.razor, layouts and wwwroot, so nothing feels like magic. Jul 30, 2026 · 6 min read →
03Blazor: Beginner to Intermediate · Part 3 Blazor Components: Build Once, Use Everywhere Components are Blazor's LEGO bricks. Build a reusable PatientCard, pass data in with parameters, and compose a page from pieces. Jul 30, 2026 · 6 min read →
07Blazor: Beginner to Intermediate · Part 7 Blazor Forms and Validation, the Friendly Way Build a complete add-patient form in Blazor. Collect input with EditForm, validate with data annotations, and show friendly error messages. Jul 30, 2026 · 7 min read →
12Blazor: Beginner to Intermediate · Part 12 Blazor Render Modes: SSR, Server, WebAssembly — and What's Next How each Blazor render mode works in .NET 10. Static SSR, Interactive Server, WebAssembly and Auto, how to choose, and where to go next. Jul 30, 2026 · 7 min read →
05Blazor: Beginner to Intermediate · Part 5 Rendering Lists and Conditionals in Blazor Render collections with @foreach and empty states with @if. Then build a searchable patient list, the bread and butter of real UIs. Jul 30, 2026 · 6 min read →
09Blazor: Beginner to Intermediate · Part 9 Services and Dependency Injection in Blazor Move shared logic into services and let DI deliver them. Singleton, scoped and transient lifetimes explained in plain words. Jul 30, 2026 · 6 min read →
11Blazor: Beginner to Intermediate · Part 11 Calling Web APIs from Blazor with HttpClient Fetch live data with HttpClient and GetFromJsonAsync. Handle loading and errors gracefully, and display API results in your UI. Jul 30, 2026 · 6 min read →
Fixes Blazor: 'An unhandled error has occurred' shows on every page after deleting the template CSS The Blazor error banner shows on every page. It is always in the layout markup and only hidden by a display:none rule in the template CSS you deleted. Sep 4, 2026 · 2 min read →
C# & .NET Blazor Server vs WebAssembly vs Hybrid: Which One, and When Three ways to run Blazor, compared on what actually decides it. Latency, offline, hosting cost, SEO and device access, from an app that shipped on all three. Sep 4, 2026 · 9 min read →
C# & .NET What Is Blazor? Full-Stack Web Apps in C# Blazor lets you build web apps in C# instead of JavaScript. This very site runs on it, and here is how it works and when to choose it. Jul 30, 2026 · 5 min read →
05From Prompt to Production · Part 5 Scaffold to Skeleton: Blazor Server, EF Core and Npgsql From template to skeleton with an AI pair. The SQLite to PostgreSQL swap, the first migration, a seeder, and the rule that makes AI scaffolding safe. Aug 9, 2026 · 8 min read →
08From Prompt to Production · Part 8 Chat, Presence and the 401 That Explains Blazor Server Staff chat with who is online and typing indicators. Plus the AI design that fails first: why an [Authorize] hub 401s from a server-side component. Aug 9, 2026 · 8 min read →
Fixes Blazor Hybrid on Android: content hidden under the status bar, env(safe-area-inset-top) is 0 Your header sits under Android's status bar. The CSS safe-area variables read zero inside the WebView, so the insets must come from the native side. Sep 4, 2026 · 2 min read →
Fixes Blazor serves empty CSS and JS files: MapStaticAssets without ASPNETCORE_ENVIRONMENT=Development Every static file comes back with zero bytes. dotnet run --no-launch-profile means Production, and MapStaticAssets wants published assets there. Sep 4, 2026 · 2 min read →
Fixes Blazor: the h1 shows a focus ring after navigation (FocusOnNavigate and tabindex=-1) FocusOnNavigate moves keyboard focus to your heading. Your :focus-visible rule then draws a ring around it. Keep the focus, lose the ring. Sep 4, 2026 · 2 min read →
Fixes CS0542: member names cannot be the same as their enclosing type (a Blazor @inject named after its page) Queue.razor compiles to a class called Queue. So injecting a member called Queue is illegal. Rename the injected property, not the page. Sep 4, 2026 · 2 min read →
06Blazor: Beginner to Intermediate · Part 6 Component Communication: Parameters Down, Events Up Parameters flow down, events bubble up. Connect parent and child components with [Parameter] and EventCallback, the Blazor way. Jul 30, 2026 · 6 min read →
08Blazor: Beginner to Intermediate · Part 8 Routing and Navigation: Pages, URLs and Parameters Give every screen an address in your Blazor app. Page routes, route parameters, NavLink and programmatic navigation for a multi-page clinic app. Jul 30, 2026 · 6 min read →
10Blazor: Beginner to Intermediate · Part 10 The Component Lifecycle: What Runs When (and Why) What runs when in a Blazor component, and why. OnInitialized, OnParametersSet and OnAfterRender, where to load data, and the classic mistakes to avoid. Jul 30, 2026 · 6 min read →
04Blazor: Beginner to Intermediate · Part 4 Data Binding and Events: Making Pages Interactive Wire up @onclick and @bind to make pages interactive. Then understand the render loop that keeps your UI in sync with your data. Jul 30, 2026 · 6 min read →
01From Prompt to Pocket · Part 1 From Prompt to Pocket: One App for Phone, Desk and Browser Why ClinicLive's patients deserve an app. Why Blazor Hybrid instead of a rewrite, what a shared-screens architecture costs, and what this season does not cover. Sep 3, 2026 · 9 min read →
05From Prompt to Private · Part 5 Talking to It from .NET: OllamaSharp, Streaming, and a Chat Panel in the Staff Pages ClinicLive gets its first assistant screen. IChatClient over OllamaSharp, a streaming Blazor chat panel, and an answer that proves why the next two parts exist. Sep 18, 2026 · 5 min read →
09From Prompt to Polish · Part 9 Micro-Interactions: Motion That Explains Change Motion should explain change, and nothing runs over 400ms. Reduced motion kills it all, plus the Blazor @key trick that turns CSS animations into update cues. Aug 13, 2026 · 6 min read →
12From Prompt to Production · Part 12 Ship It: A VPS, nginx, systemd — and the Headers SignalR Needs Publish Blazor and SignalR to a Linux VPS. An AI-written runbook, GitHub Actions CI, and the three nginx lines between works locally and works in production. Aug 9, 2026 · 7 min read →
02From Prompt to Polish · Part 2 Foundations: Design Tokens, Dark Mode — and Killing Bootstrap Every color becomes a token, and dark mode is a token swap. Bootstrap is deleted while every page keeps compiling, thanks to the class-vocabulary trick. Aug 13, 2026 · 8 min read →
02From Prompt to Pocket · Part 2 One UI, Three Hosts: The Capability-Interface Pattern One shared Razor Class Library, three hosts, the same screens. Every native feature becomes an interface that each host answers honestly. Sep 3, 2026 · 9 min read →
03From Prompt to Pocket · Part 3 The App Needs a Door: A Thin API Over the Clinic A phone cannot talk to Postgres directly. Four minimal-API endpoints over the season-one services, a shared contracts project, and no CORS anywhere. Sep 3, 2026 · 8 min read →
04From Prompt to Pocket · Part 4 Live Queue in Your Pocket: SignalR, App Lifecycle and a Reconnect That Never Gives Up The phone joins the same hub as the wall TV. One connection per app, a lifecycle capability for resume, and proof that the default reconnect policy gives up. Sep 3, 2026 · 8 min read →
08From Prompt to Polish · Part 8 The Accessibility Pass: Announce, Don't Just Paint A silently updating board is invisible to a screen reader. aria-live regions, landmarks, a skip link and a contrast audit, with AI as the auditor. Aug 13, 2026 · 7 min read →
08From Prompt to Pocket · Part 8 Scan to Check In: A QR on the Ticket, a Native Scanner Over the WebView A QR on the ticket, a native scanner over the WebView. QRCoder on the server, a ZXing camera page, and a parser test that caught a regex letting bad input in. Sep 3, 2026 · 7 min read →
10From Prompt to Pocket · Part 10 Same App, on the Desk: Windows, One Breakpoint and a Waiting-Room Page The same app on a Windows desk. One CSS breakpoint turns the tab bar into a side rail on every host, a reception queue page, and the toast that stayed open. Sep 3, 2026 · 6 min read →
12From Prompt to Pocket · Part 12 The Pocket Retro: What a Companion App Really Costs The Pocket season, measured and reviewed. The gallery across three hosts, every AI mistake, what the bench could not prove, and whether Hybrid was right. Sep 3, 2026 · 12 min read →