# abpframework/abp architecture

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

- Interactive diagram: https://gitdiagram.com/abpframework/abp
- Repository: https://github.com/abpframework/abp

## Overview

ABP is a modular .NET application framework for building enterprise applications. A typical developer starts from an ABP solution or module, implements business behavior, and composes framework infrastructure and application modules into a running application. The README also identifies DDD, modularity, microservices, multi-tenancy, infrastructure, cross-cutting concerns, UI themes, and tooling as major capabilities. The graph emphasizes runtime framework and module behavior represented in the supplied tree and excerpts; unsampled subsystems are included only where their paths are supported, and their internal wiring is not inferred.

Main entry points: [`framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs`](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs) (Template rendering), [`framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpControllerBase.cs`](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpControllerBase.cs) (MVC controller base), [`modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs`](https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs) (Identity management), [`framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs`](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs) (Template definitions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application surface"]
  node_application["ABP application"]
  node_domain["Domain services"]
  node_tooling["CLI and tools"]
end

subgraph group_framework["Framework foundations"]
  node_modularity["Modularity and DDD"]
  node_multitenancy["Current tenant<br/>[ICurrentTenant.cs]"]
  node_crosscutting["Cross-cutting services<br/>[Check.cs]"]
end

subgraph group_infra["Infrastructure"]
  node_templating["Template rendering"]
  node_template_definitions["Template definitions"]
  node_template_definition["Template metadata"]
  node_razor["Razor renderer"]
  node_blob["Blob storage"]
  node_event_bus["Event bus"]
  node_jobs["Background jobs"]
  node_audit["Audit logging"]
end

subgraph group_modules["Application modules"]
  node_identity["Identity management"]
  node_permissions["Resource permissions"]
  node_cms["Public comments"]
  node_settings["Setting pages"]
  node_identity_user["Identity user model<br/>[IdentityUser.cs]"]
end

subgraph group_presentation["Presentation"]
  node_api["MVC controller base"]
  node_ui_themes["UI themes"]
  node_api_versioning["API versioning"]
end

node_developer(("Application developer"))

node_developer -->|"builds"| node_application
node_application -->|"composes modules"| node_modularity
node_application -.->|"exposes APIs"| node_api
node_application -->|"implements business rules"| node_domain
node_application -->|"uses"| node_multitenancy
node_application -->|"uses"| node_crosscutting
node_application -->|"adds identity features"| node_identity
node_application -->|"adds permissions"| node_permissions
node_application -->|"adds CMS features"| node_cms
node_application -->|"adds settings"| node_settings
node_application -.->|"uses templates"| node_templating
node_application -->|"uses storage"| node_blob
node_application -->|"uses events"| node_event_bus
node_application -->|"uses jobs"| node_jobs
node_application -->|"uses auditing"| node_audit
node_application -->|"uses themes"| node_ui_themes
node_developer -->|"runs tools"| node_tooling
node_api -->|"resolves services"| node_crosscutting
node_api -->|"routes comment requests"| node_cms
node_cms -->|"maps comment input"| node_api
node_identity -->|"manages users"| node_identity_user
node_identity -->|"changes tenant scope"| node_multitenancy
node_templating -->|"resolves definitions"| node_template_definitions
node_templating -->|"reads metadata"| node_template_definition
node_template_definitions -->|"returns definitions"| node_template_definition
node_razor -->|"extends renderer"| node_templating
node_razor -->|"loads definition"| node_template_definitions

click node_api "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpControllerBase.cs"
click node_multitenancy "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ICurrentTenant.cs"
click node_crosscutting "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs"
click node_identity "https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs"
click node_permissions "https://github.com/abpframework/abp/blob/dev/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs"
click node_cms "https://github.com/abpframework/abp/blob/dev/modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicCommentsController.cs"
click node_settings "https://github.com/abpframework/abp/blob/dev/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs"
click node_templating "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs"
click node_template_definitions "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs"
click node_template_definition "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinition.cs"
click node_razor "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplateRenderingEngine.cs"
click node_blob "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobPipelineContext.cs"
click node_identity_user "https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs"
click node_api_versioning "https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/IRequestedApiVersion.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_application,node_domain,node_tooling toneBlue
class node_modularity,node_multitenancy,node_crosscutting toneAmber
class node_templating,node_template_definitions,node_template_definition,node_razor,node_blob,node_event_bus,node_jobs,node_audit toneMint
class node_identity,node_permissions,node_cms,node_settings,node_identity_user toneRose
class node_api,node_ui_themes,node_api_versioning,node_developer toneIndigo
```

## Components

### Application surface

- **ABP application**
- **Domain services**
- **CLI and tools**

### Framework foundations

- **Modularity and DDD**
- [Current tenant](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ICurrentTenant.cs): `framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ICurrentTenant.cs`
- [Cross-cutting services](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs): `framework/src/Volo.Abp.Core/Volo/Abp/Check.cs`

### Infrastructure

- [Template rendering](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs): `framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs`
- [Template definitions](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs): `framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs`
- [Template metadata](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinition.cs): `framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinition.cs`
- [Razor renderer](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplateRenderingEngine.cs): `framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplateRenderingEngine.cs`
- [Blob storage](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobPipelineContext.cs): `framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobPipelineContext.cs`
- **Event bus**
- **Background jobs**
- **Audit logging**

### Application modules

- [Identity management](https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs): `modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs`
- [Resource permissions](https://github.com/abpframework/abp/blob/dev/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs): `modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs`
- [Public comments](https://github.com/abpframework/abp/blob/dev/modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicCommentsController.cs): `modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicCommentsController.cs`
- [Setting pages](https://github.com/abpframework/abp/blob/dev/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs): `modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs`
- [Identity user model](https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs): `modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs`

### Presentation

- [MVC controller base](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpControllerBase.cs): `framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpControllerBase.cs`
- **UI themes**
- [API versioning](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/IRequestedApiVersion.cs): `framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/IRequestedApiVersion.cs`

### Other components

- **Application developer**

## Connections

- Application developer → ABP application: builds (evidence: `README.md`)
- ABP application → Modularity and DDD: composes modules (evidence: `README.md`)
- ABP application → MVC controller base: exposes APIs (evidence: `README.md`)
- ABP application → Domain services: implements business rules (evidence: `README.md`)
- ABP application → Current tenant: uses (evidence: `README.md`)
- ABP application → Cross-cutting services: uses (evidence: `README.md`)
- ABP application → Identity management: adds identity features (evidence: `README.md`)
- ABP application → Resource permissions: adds permissions (evidence: `README.md`)
- ABP application → Public comments: adds CMS features (evidence: `README.md`)
- ABP application → Setting pages: adds settings (evidence: `README.md`)
- ABP application → Template rendering: uses templates (evidence: `README.md`)
- ABP application → Blob storage: uses storage (evidence: `README.md`)
- ABP application → Event bus: uses events (evidence: `README.md`)
- ABP application → Background jobs: uses jobs (evidence: `README.md`)
- ABP application → Audit logging: uses auditing (evidence: `README.md`)
- ABP application → UI themes: uses themes (evidence: `README.md`)
- Application developer → CLI and tools: runs tools (evidence: `README.md`)
- MVC controller base → Cross-cutting services: resolves services (evidence: `framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpControllerBase.cs`)
- MVC controller base → Public comments: routes comment requests (evidence: `modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicCommentsController.cs`)
- Public comments → MVC controller base: maps comment input (evidence: `modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicCommentsController.cs`)
- Identity management → Identity user model: manages users (evidence: `modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs`)
- Identity management → Current tenant: changes tenant scope (evidence: `modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs`)
- Template rendering → Template definitions: resolves definitions (evidence: `framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs`)
- Template rendering → Template metadata: reads metadata (evidence: `framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateRenderingEngineBase.cs`)
- Template definitions → Template metadata: returns definitions (evidence: `framework/src/Volo.Abp.TextTemplating.Core/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs`)
- Razor renderer → Template rendering: extends renderer (evidence: `framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplateRenderingEngine.cs`)
- Razor renderer → Template definitions: loads definition (evidence: `framework/src/Volo.Abp.TextTemplating.Razor/Volo/Abp/TextTemplating/Razor/RazorTemplateRenderingEngine.cs`)
