# orchardcms/orchardcore architecture

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

- Interactive diagram: https://gitdiagram.com/orchardcms/orchardcore
- Repository: https://github.com/orchardcms/orchardcore

## Overview

Orchard Core is a modular, multi-tenant ASP.NET Core framework and CMS. A typical user authors and manages content through the admin interface, while APIs and public rendering expose content and query results. The tree and sampled source show query execution, content preview, and several admin-list query implementations; other documented CMS capabilities are represented at their module boundaries, without assuming their internal wiring. The supplied excerpts do not establish the overall request pipeline or persistence configuration.

Main entry points: [`src/OrchardCore.Modules/OrchardCore.Admin`](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Admin) (Admin interface), [`src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs`](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs) (Query manager), [`src/OrchardCore.Modules/OrchardCore.Contents`](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Contents) (Content management), [`src/OrchardCore.Modules/OrchardCore.ContentPreview/Controllers/PreviewController.cs`](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.ContentPreview/Controllers/PreviewController.cs) (Content preview)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Application runtime"]
  node_cms["CMS host<br/>[Program.cs]"]
  node_modules["Modular framework"]
  node_auto_setup["Tenant setup"]
  node_store[("Content store")]
end

subgraph group_authoring["Content authoring"]
  node_content["Content management"]
  node_fields["Content fields"]
  node_preview["Content preview"]
  node_templates["Template preview"]
end

subgraph group_queries["Queries and search"]
  node_queryapi["Query API"]
  node_manager["Query manager"]
  node_querydoc["Query definitions"]
  node_lucene["Lucene queries"]
  node_elastic["Elasticsearch search"]
end

subgraph group_admin["Administration"]
  node_admin["Admin interface<br/>[OrchardCore.Admin]"]
  node_dashboard["Admin dashboard"]
  node_menu["Admin menus"]
  node_audit["Audit trail"]
end

subgraph group_extensions["CMS extensions"]
  node_taxonomy["Taxonomy listings"]
  node_users["User listings"]
  node_notifications["Notifications"]
  node_aliases["Content aliases<br/>[OrchardCore.Alias]"]
  node_autoroute["Content routing"]
  node_antivirus["File scanning"]
end

node_editor(("CMS editor"))
node_caller(("API caller"))

node_editor -->|"uses CMS"| node_cms
node_cms -->|"hosts modules"| node_modules
node_editor -->|"authors content"| node_admin
node_admin -->|"manages content"| node_content
node_content -->|"uses fields"| node_fields
node_editor -->|"requests draft preview"| node_preview
node_preview -->|"creates draft"| node_content
node_preview -->|"caches draft"| node_store
node_editor -->|"previews template"| node_templates
node_templates -->|"loads published item"| node_content
node_admin -->|"opens dashboard"| node_dashboard
node_admin -->|"configures menus"| node_menu
node_admin -->|"reviews events"| node_audit
node_caller -->|"submits query"| node_queryapi
node_queryapi -->|"loads and executes"| node_manager
node_manager -->|"reads definitions"| node_querydoc
node_manager -->|"updates definitions"| node_querydoc
node_manager -.->|"dispatches source"| node_lucene
node_manager -.->|"dispatches source"| node_elastic
node_admin -->|"lists term content"| node_taxonomy
node_admin -->|"lists users"| node_users
node_admin -->|"lists notifications"| node_notifications
node_content -->|"queries content"| node_store
node_taxonomy -->|"queries content"| node_store
node_users -->|"queries users"| node_store
node_notifications -->|"queries notifications"| node_store
node_auto_setup -->|"configures tenants"| node_cms

click node_cms "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Cms.Web/Program.cs"
click node_modules "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules"
click node_content "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Contents"
click node_fields "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.ContentFields"
click node_preview "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.ContentPreview/Controllers/PreviewController.cs"
click node_templates "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.Templates/Controllers/PreviewController.cs"
click node_admin "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Admin"
click node_dashboard "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AdminDashboard"
click node_menu "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AdminMenu"
click node_audit "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AuditTrail"
click node_queryapi "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.Queries/Controllers/QueryApiController.cs"
click node_manager "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs"
click node_querydoc "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs"
click node_lucene "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Lucene.Core/LuceneQueryService.cs"
click node_elastic "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Elasticsearch.Core/Services/ElasticsearchQueryService.cs"
click node_taxonomy "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Taxonomies.Core/DefaultContentsTaxonomyListQueryService.cs"
click node_users "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.Users/Services/DefaultUsersAdminListQueryService.cs"
click node_notifications "https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Notifications.Core/DefaultNotificationsAdminListQueryService.cs"
click node_aliases "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Alias"
click node_autoroute "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Autoroute"
click node_antivirus "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Antivirus"
click node_auto_setup "https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AutoSetup"

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_cms,node_modules,node_auto_setup,node_store toneBlue
class node_content,node_fields,node_preview,node_templates toneAmber
class node_queryapi,node_manager,node_querydoc,node_lucene,node_elastic,node_caller toneMint
class node_admin,node_dashboard,node_menu,node_audit toneRose
class node_taxonomy,node_users,node_notifications,node_aliases,node_autoroute,node_antivirus,node_editor toneIndigo
```

## Components

### Application runtime

- [CMS host](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Cms.Web/Program.cs): `src/OrchardCore.Cms.Web/Program.cs`
- [Modular framework](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules): `src/OrchardCore.Modules`
- [Tenant setup](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AutoSetup): `src/OrchardCore.Modules/OrchardCore.AutoSetup`
- **Content store**

### Content authoring

- [Content management](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Contents): `src/OrchardCore.Modules/OrchardCore.Contents`
- [Content fields](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.ContentFields): `src/OrchardCore.Modules/OrchardCore.ContentFields`
- [Content preview](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.ContentPreview/Controllers/PreviewController.cs): `src/OrchardCore.Modules/OrchardCore.ContentPreview/Controllers/PreviewController.cs`
- [Template preview](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.Templates/Controllers/PreviewController.cs): `src/OrchardCore.Modules/OrchardCore.Templates/Controllers/PreviewController.cs`

### Queries and search

- [Query API](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.Queries/Controllers/QueryApiController.cs): `src/OrchardCore.Modules/OrchardCore.Queries/Controllers/QueryApiController.cs`
- [Query manager](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs): `src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs`
- [Query definitions](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs): `src/OrchardCore/OrchardCore.Queries.Core/Services/DefaultQueryManager.cs`
- [Lucene queries](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Lucene.Core/LuceneQueryService.cs): `src/OrchardCore/OrchardCore.Lucene.Core/LuceneQueryService.cs`
- [Elasticsearch search](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Elasticsearch.Core/Services/ElasticsearchQueryService.cs): `src/OrchardCore/OrchardCore.Elasticsearch.Core/Services/ElasticsearchQueryService.cs`

### Administration

- [Admin interface](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Admin): `src/OrchardCore.Modules/OrchardCore.Admin`
- [Admin dashboard](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AdminDashboard): `src/OrchardCore.Modules/OrchardCore.AdminDashboard`
- [Admin menus](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AdminMenu): `src/OrchardCore.Modules/OrchardCore.AdminMenu`
- [Audit trail](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.AuditTrail): `src/OrchardCore.Modules/OrchardCore.AuditTrail`

### CMS extensions

- [Taxonomy listings](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Taxonomies.Core/DefaultContentsTaxonomyListQueryService.cs): `src/OrchardCore/OrchardCore.Taxonomies.Core/DefaultContentsTaxonomyListQueryService.cs`
- [User listings](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore.Modules/OrchardCore.Users/Services/DefaultUsersAdminListQueryService.cs): `src/OrchardCore.Modules/OrchardCore.Users/Services/DefaultUsersAdminListQueryService.cs`
- [Notifications](https://github.com/orchardcms/orchardcore/blob/main/src/OrchardCore/OrchardCore.Notifications.Core/DefaultNotificationsAdminListQueryService.cs): `src/OrchardCore/OrchardCore.Notifications.Core/DefaultNotificationsAdminListQueryService.cs`
- [Content aliases](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Alias): `src/OrchardCore.Modules/OrchardCore.Alias`
- [Content routing](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Autoroute): `src/OrchardCore.Modules/OrchardCore.Autoroute`
- [File scanning](https://github.com/orchardcms/orchardcore/tree/main/src/OrchardCore.Modules/OrchardCore.Antivirus): `src/OrchardCore.Modules/OrchardCore.Antivirus`

### Other components

- **CMS editor**
- **API caller**

## Connections

- CMS editor → CMS host: uses CMS
- CMS host → Modular framework: hosts modules
- CMS editor → Admin interface: authors content
- Admin interface → Content management: manages content
- Content management → Content fields: uses fields
- CMS editor → Content preview: requests draft preview
- Content preview → Content management: creates draft
- Content preview → Content store: caches draft
- CMS editor → Template preview: previews template
- Template preview → Content management: loads published item
- Admin interface → Admin dashboard: opens dashboard
- Admin interface → Admin menus: configures menus
- Admin interface → Audit trail: reviews events
- API caller → Query API: submits query
- Query API → Query manager: loads and executes
- Query manager → Query definitions: reads definitions
- Query manager → Query definitions: updates definitions
- Query manager → Lucene queries: dispatches source
- Query manager → Elasticsearch search: dispatches source
- Admin interface → Taxonomy listings: lists term content
- Admin interface → User listings: lists users
- Admin interface → Notifications: lists notifications
- Content management → Content store: queries content
- Taxonomy listings → Content store: queries content
- User listings → Content store: queries users
- Notifications → Content store: queries notifications
- Tenant setup → CMS host: configures tenants
