Skip to main content
The AI•Pkg web UI is built with Blazor SSR (server-side rendering) with selective interactive islands. There are no Razor (.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 in AI•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/.
Color palette (CSS custom properties):
These CSS variables are set in 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

The following must not exist in AI•Pkg.Server/:
  • No .cshtml Razor views
  • No _Layout.cshtml master 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