.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
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
1
Sign In
User clicks “Sign In” → redirected to
/auth/github.2
OAuth Callback
GitHub OAuth callback → session cookie set → redirect to previous page.
3
Sign Out
POST /auth/logout (CSRF-protected) → redirect to home.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