Phase Summary
| Phase | Goal | Key Deliverable |
|---|---|---|
| 0 | Clean SLNX solution, SQL DB project, EasyAF scaffolding | dotnet build AI•Pkg.slnx succeeds |
| 1 | Core Registry API, push/download/registration, auth, AI•Pkg.Core | Package round-trip works |
| 2 | Search + catalog pipeline (Azure AI Search) | Packages appear in search after push |
| 3 | Blazor web UI | Full browser experience |
| 4 | aipkg CLI MVP (Native AOT) | Single-binary install/push/search |
Plan Documents
01 · Tech Stack
Technology choices for runtime, API framework, ORM, auth, storage, and search.
02 · Solution Structure
AI•Pkg.slnx project layout and how it maps from NuGetGallery source.03 · Data Layer
EasyAF setup, SQL Server DB Project schema, entity generation workflow.
04 · Backend
Auth, storage, search, background jobs, deletion lists, NuGet→AI•Pkg endpoint mapping.
05 · Frontend
Blazor component tree, Tailwind/Lucide styling, what NOT to include.
06 · SDK
Native AOT publish flags, RID matrix, distribution channels, TypeScript SDK strategy.
07 · Docs Portal Setup
DotNetDocs.com for
AI•Pkg.Core, Mintlify developer portal, OpenAPI CI/CD.08 · Migration
Four migration phases: source file mapping, deletion lists, verification checklists.
Quick Reference: What Stays vs. What Goes
| NuGetGallery Component | AI•Pkg Fate |
|---|---|
| V3 API logic (push, download, registration, search) | Keep & adapt — new schemas, new field names |
| V2/OData API | Delete |
| OWIN / Autofac / Razor views | Delete |
| Symbol package support | Delete — not applicable |
| Azure Blob storage abstraction | Keep & adapt — rename .nupkg → .aipkg |
| Azure AI Search integration | Keep & adapt — new document model |
| CDN stats parsing jobs | Keep & adapt — .aipkg download events |
| GitHub OAuth + PBKDF2 API keys | Keep & port — no structural changes |
NuGetGallery.sln (139 projects) | Do not convert — new AI•Pkg.slnx from scratch |
Guiding Principles for Implementation
- New SLNX, not converted solution —
AI•Pkg.slnxis created from scratch; NuGetGallery projects are ported, not referenced. - EasyAF owns the data layer —
.sqlprojis schema source of truth; no hand-written EF migrations. - Blazor SSR only — no Razor views, no jQuery, no OWIN. Static SSR for public pages, Interactive Server for authenticated flows.
- AOT-safe code —
AI•Pkg.Coremust be AOT compatible; no reflection emit or dynamic code. - Port, don’t preserve — NuGetGallery source is a reference, not a constraint. Strip aggressively.