# sitefinity/sitefinity-cli architecture

> Architecture diagram of the GitHub repository sitefinity/sitefinity-cli, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sitefinity/sitefinity-cli
- Repository: https://github.com/sitefinity/sitefinity-cli

## Overview

Sitefinity CLI is a command-line maintenance tool for Sitefinity projects. Users invoke `sf` commands to create or install projects, add resources, upgrade packages and project files, or migrate frontend resources to a decoupled renderer. The README documents the command capabilities and template-version behavior; sampled source confirms command registration and parts of package preparation and project inspection. Several command implementations are listed but not sampled, so their internal wiring is intentionally omitted.

Main entry points: [`Sitefinity CLI/Program.cs`](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Program.cs) (Command host), [`Sitefinity CLI/Commands/MigrateCommand.cs`](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/MigrateCommand.cs) (Migrate resources), [`Sitefinity CLI/PackageManagement/Implementations/SitefinityPackageManager.cs`](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/PackageManagement/Implementations/SitefinityPackageManager.cs) (Package manager), [`Sitefinity CLI/Services/SitefinityNugetPackageService.cs`](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Services/SitefinityNugetPackageService.cs) (Upgrade package prep)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI entry and commands"]
  node_program["Command host<br/>[Program.cs]"]
  node_add["Add resources<br/>[AddCommand.cs]"]
end

subgraph group_project["Project operations"]
  node_create["Create project<br/>[CreateCommand.cs]"]
  node_install["Install project<br/>[InstallCommand.cs]"]
  node_upgrade["Upgrade project<br/>[UpgradeCommand.cs]"]
  node_projectservice["Project inspection"]
  node_templates["Versioned templates"]
end

subgraph group_migration["Frontend migration"]
  node_migration["Migrate resources<br/>[MigrateCommand.cs]"]
  node_renderer["ASP.NET Core renderer<br/>[Program.cs]"]
end

subgraph group_packages["Package management"]
  node_nugetservice["Upgrade package prep"]
  node_packagemanager["Package manager"]
  node_api["NuGet API client<br/>[NuGetApiClient.cs]"]
  node_dotnet[".NET CLI client<br/>[DotnetCliClient.cs]"]
end

node_user(("CLI user"))
node_nuget[("NuGet sources")]
node_cms["Sitefinity CMS project"]

node_user -->|"runs sf"| node_program
node_program -->|"dispatches"| node_add
node_program -->|"dispatches"| node_create
node_program -->|"dispatches"| node_install
node_program -->|"dispatches"| node_upgrade
node_program -->|"dispatches"| node_migration
node_create -->|"generates from"| node_templates
node_add -->|"generates from"| node_templates
node_migration -->|"migrates resources"| node_cms
node_migration -.->|"targets renderer"| node_renderer
node_upgrade -->|"inspects project"| node_projectservice
node_nugetservice -->|"prepares packages"| node_packagemanager
node_nugetservice -->|"queries versions"| node_dotnet
node_packagemanager -->|"gets dependency tree"| node_api
node_api -->|"retrieves package metadata"| node_nuget
node_packagemanager -->|"updates references"| node_cms

click node_program "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Program.cs"
click node_add "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/AddCommand.cs"
click node_create "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/CreateCommand.cs"
click node_install "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/InstallCommand.cs"
click node_upgrade "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/UpgradeCommand.cs"
click node_projectservice "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Services/SitefinityProjectService.cs"
click node_templates "https://github.com/sitefinity/sitefinity-cli/tree/master/Sitefinity%20CLI/Templates"
click node_migration "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/MigrateCommand.cs"
click node_renderer "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/VisualStudio/Templates/Renderer/Program.cs"
click node_nugetservice "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Services/SitefinityNugetPackageService.cs"
click node_packagemanager "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/PackageManagement/Implementations/SitefinityPackageManager.cs"
click node_api "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/PackageManagement/Implementations/NuGetApiClient.cs"
click node_dotnet "https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/PackageManagement/Implementations/DotnetCliClient.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_program,node_add,node_user toneBlue
class node_create,node_install,node_upgrade,node_projectservice,node_templates,node_nuget toneAmber
class node_migration,node_renderer toneMint
class node_nugetservice,node_packagemanager,node_api,node_dotnet toneRose
class node_cms toneIndigo
```

## Components

### CLI entry and commands

- [Command host](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Program.cs): `Sitefinity CLI/Program.cs`
- [Add resources](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/AddCommand.cs): `Sitefinity CLI/Commands/AddCommand.cs`

### Project operations

- [Create project](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/CreateCommand.cs): `Sitefinity CLI/Commands/CreateCommand.cs`
- [Install project](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/InstallCommand.cs): `Sitefinity CLI/Commands/InstallCommand.cs`
- [Upgrade project](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/UpgradeCommand.cs): `Sitefinity CLI/Commands/UpgradeCommand.cs`
- [Project inspection](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Services/SitefinityProjectService.cs): `Sitefinity CLI/Services/SitefinityProjectService.cs`
- [Versioned templates](https://github.com/sitefinity/sitefinity-cli/tree/master/Sitefinity%20CLI/Templates): `Sitefinity CLI/Templates`

### Frontend migration

- [Migrate resources](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Commands/MigrateCommand.cs): `Sitefinity CLI/Commands/MigrateCommand.cs`
- [ASP.NET Core renderer](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/VisualStudio/Templates/Renderer/Program.cs): `Sitefinity CLI/VisualStudio/Templates/Renderer/Program.cs`

### Package management

- [Upgrade package prep](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/Services/SitefinityNugetPackageService.cs): `Sitefinity CLI/Services/SitefinityNugetPackageService.cs`
- [Package manager](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/PackageManagement/Implementations/SitefinityPackageManager.cs): `Sitefinity CLI/PackageManagement/Implementations/SitefinityPackageManager.cs`
- [NuGet API client](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/PackageManagement/Implementations/NuGetApiClient.cs): `Sitefinity CLI/PackageManagement/Implementations/NuGetApiClient.cs`
- [.NET CLI client](https://github.com/sitefinity/sitefinity-cli/blob/master/Sitefinity%20CLI/PackageManagement/Implementations/DotnetCliClient.cs): `Sitefinity CLI/PackageManagement/Implementations/DotnetCliClient.cs`

### Other components

- **CLI user**
- **NuGet sources**
- **Sitefinity CMS project**

## Connections

- CLI user → Command host: runs sf
- Command host → Add resources: dispatches
- Command host → Create project: dispatches
- Command host → Install project: dispatches
- Command host → Upgrade project: dispatches
- Command host → Migrate resources: dispatches
- Create project → Versioned templates: generates from
- Add resources → Versioned templates: generates from
- Migrate resources → Sitefinity CMS project: migrates resources
- Migrate resources → ASP.NET Core renderer: targets renderer
- Upgrade project → Project inspection: inspects project
- Upgrade package prep → Package manager: prepares packages
- Upgrade package prep → .NET CLI client: queries versions
- Package manager → NuGet API client: gets dependency tree
- NuGet API client → NuGet sources: retrieves package metadata
- Package manager → Sitefinity CMS project: updates references
