.cshtml) views, no jQuery, no Bootstrap scripts, and no OWIN startup code. The UI lives entirely within AI•Pkg.Server/ alongside the Registry API.
The design philosophy: public-facing pages are statically server-rendered for SEO and performance. Authenticated and data-mutation pages use Interactive Server rendering.
For the full page inventory, URL map, SLAs, and accessibility requirements, see the Registry UI spec.
Component Architecture
All Blazor components live inAI•Pkg.Server/Components/:
Render Mode by Component
| Component / Feature | Render Mode | Notes |
|---|---|---|
Home.razor | @rendermode null (Static SSR) | CDN-cacheable |
Search.razor | @rendermode null (Static SSR) | Form resubmit for filter changes |
PackageDetail.razor | @rendermode null (Static SSR) | SEO critical |
VersionSelector.razor | @rendermode InteractiveServer | Island within SSR page |
Upload.razor | @rendermode InteractiveServer | Multi-step wizard |
AccountApiKeys.razor | @rendermode InteractiveServer | Authenticated |
AccountPackages.razor | @rendermode InteractiveServer | Authenticated |
Admin/*.razor | @rendermode InteractiveServer | Internal tool |
VersionSelector.razor is the canonical example of a Blazor interactive island embedded in an otherwise SSR-rendered page.Styling
Tailwind CSS
Via CDN for prototype; PostCSS build for production. No Bootstrap.
No jQuery
All interactive behavior handled by Blazor or vanilla JS minimal helpers.
Dark Mode
System preference (
prefers-color-scheme) via Tailwind dark: classes.Lucide Icons
SVG sprites or inline. Platform logos as SVG files in
wwwroot/img/platforms/.AI•Pkg.Server/wwwroot/css/app.css and consumed via Tailwind plugin or direct CSS.
Authentication Flow
No username/password login. GitHub is the only provider at MVP. OIDC providers added post-MVP.
What is NOT in the UI
- No
.cshtmlRazor views - No
_Layout.cshtmlmaster layout - No
@Html.*helpers - No jQuery, Bootstrap JS, or
bundle.config.js - No OWIN
Startup.cs - No SignalR (use Blazor server circuit instead)
- No Symbol package pages or upload flow