diff --git a/Directory.Packages.props b/Directory.Packages.props
index 8297144..226dc98 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -53,6 +53,7 @@
+
diff --git a/OrchardCoreContrib.Modules.sln b/OrchardCoreContrib.Modules.sln
index 27ccb2f..c3a2d32 100644
--- a/OrchardCoreContrib.Modules.sln
+++ b/OrchardCoreContrib.Modules.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
-VisualStudioVersion = 18.1.11312.151 d18.0
+VisualStudioVersion = 18.1.11312.151
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C80A325F-F4C4-4C7B-A3CF-FB77CD8C9949}"
EndProject
@@ -82,6 +82,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreContrib.Cloudfla
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreContrib.CloudflareTurnstile.Tests", "test\OrchardCoreContrib.CloudflareTurnstile.Tests\OrchardCoreContrib.CloudflareTurnstile.Tests.csproj", "{B2029246-BC23-4C18-B71A-55F13CB9E7AB}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrchardCoreContrib.Apis.Scalar", "src\OrchardCoreContrib.Apis.Scalar\OrchardCoreContrib.Apis.Scalar.csproj", "{3D421DD2-F842-4F5A-A95E-5AD8D3632712}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -216,6 +218,10 @@ Global
{B2029246-BC23-4C18-B71A-55F13CB9E7AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2029246-BC23-4C18-B71A-55F13CB9E7AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2029246-BC23-4C18-B71A-55F13CB9E7AB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D421DD2-F842-4F5A-A95E-5AD8D3632712}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3D421DD2-F842-4F5A-A95E-5AD8D3632712}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D421DD2-F842-4F5A-A95E-5AD8D3632712}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3D421DD2-F842-4F5A-A95E-5AD8D3632712}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -253,6 +259,7 @@ Global
{689A006D-0992-456E-86C9-66B7A2EE06A5} = {A239BFB0-9BA7-467C-AD41-405D0740633F}
{1CF93DCB-2DF2-4E42-A37E-744F38D347C5} = {C80A325F-F4C4-4C7B-A3CF-FB77CD8C9949}
{B2029246-BC23-4C18-B71A-55F13CB9E7AB} = {A239BFB0-9BA7-467C-AD41-405D0740633F}
+ {3D421DD2-F842-4F5A-A95E-5AD8D3632712} = {C80A325F-F4C4-4C7B-A3CF-FB77CD8C9949}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {48F73B05-7D3D-4ACF-81AE-A98B2B4EFDB2}
diff --git a/src/OrchardCoreContrib.Apis.Scalar/Manifest.cs b/src/OrchardCoreContrib.Apis.Scalar/Manifest.cs
new file mode 100644
index 0000000..56f182b
--- /dev/null
+++ b/src/OrchardCoreContrib.Apis.Scalar/Manifest.cs
@@ -0,0 +1,7 @@
+using OrchardCore.Modules.Manifest;
+
+[assembly: Module(
+ Name = "Scalar UI",
+ Description = "Enables Scalar UI for Orchard Core APIs.",
+ Dependencies = ["OrchardCoreContrib.Apis.Swagger"]
+)]
diff --git a/src/OrchardCoreContrib.Apis.Scalar/OrchardCoreContrib.Apis.Scalar.csproj b/src/OrchardCoreContrib.Apis.Scalar/OrchardCoreContrib.Apis.Scalar.csproj
new file mode 100644
index 0000000..ad002f6
--- /dev/null
+++ b/src/OrchardCoreContrib.Apis.Scalar/OrchardCoreContrib.Apis.Scalar.csproj
@@ -0,0 +1,38 @@
+
+
+
+ 1.0.0
+ The Orchard Core Contrib Team
+
+ Enables Scalar UI for Orchard Core APIs.
+ README.md
+ BSD-3-Clause
+ https://github.com/OrchardCoreContrib/OrchardCoreContrib.Modules/tree/main/src/OrchardCoreContrib.Apis.Scalar/README.md
+ https://github.com/OrchardCoreContrib/OrchardCoreContrib.Modules
+ git
+ true
+ Orchard Core, Orchard Core Contrib, OpenAPI, Swagger, Scalar UI
+ https://github.com/OrchardCoreContrib/OrchardCoreContrib.Modules/releases
+ OrchardCoreContrib.Apis.Scalar
+ icon.png
+ Orchard Core Contrib Scalar Module
+ true
+ 2019 Orchard Core Contrib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/OrchardCoreContrib.Apis.Scalar/README.md b/src/OrchardCoreContrib.Apis.Scalar/README.md
new file mode 100644
index 0000000..c9297b2
--- /dev/null
+++ b/src/OrchardCoreContrib.Apis.Scalar/README.md
@@ -0,0 +1,42 @@
+# Scalar Module
+
+This module allows you to create APIs documentations using Scalar UI.
+
+## Version
+
+1.0.0
+
+## Category
+
+Api
+
+## Dependencies
+
+| Product | Module |
+|-------------|-----------------------------|
+| OrchardCoreContrib | Swagger (`OrchardCoreContrib.Api.Swagger`) |
+
+## Features
+
+| | |
+|------------------|---------------------------------------------|
+| **Name** | Scalar (`OrchardCoreContrib.Apis.Scalar`) |
+| **Description** | Enables Scalar UI for OrchardCore APIs. |
+| **Dependencies** | |
+
+## NuGet Packages
+
+| Name | Version |
+|-----------------------------------------------------------------------------------------------------------|---------|
+| [`OrchardCoreContrib.Apis.Scalar`](https://www.nuget.org/packages/OrchardCoreContrib.Apis.Scalar/1.0.0) | 1.0.0 |
+
+## Get Started
+
+1. Install the [`OrchardCoreContrib.Apis.Scalar`](https://www.nuget.org/packages/OrchardCoreContrib.Apis.Scalar/) NuGet package to your Orchard Core host project.
+2. Go to the admin site
+3. Select **Configuration -> Features** menu.
+
+### Scalar UI
+
+4. Enable the `Scalar UI` feature.
+5. Go to the `{tenant-URL}/scalar`, you should see all the APIs listed in Scalar UI docs.
diff --git a/src/OrchardCoreContrib.Apis.Scalar/Startup.cs b/src/OrchardCoreContrib.Apis.Scalar/Startup.cs
new file mode 100644
index 0000000..f1c09f3
--- /dev/null
+++ b/src/OrchardCoreContrib.Apis.Scalar/Startup.cs
@@ -0,0 +1,19 @@
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Routing;
+using Microsoft.Extensions.DependencyInjection;
+using OrchardCore.Modules;
+using OrchardCoreContrib.OpenApi.Abstractions;
+using Scalar.AspNetCore;
+
+namespace OrchardCoreContrib.Apis.Scalar;
+
+public sealed class Startup : StartupBase
+{
+ public override void Configure(IApplicationBuilder app, IEndpointRouteBuilder routes, IServiceProvider serviceProvider)
+ {
+ var swaggerApiDefinition = serviceProvider.GetService();
+
+ routes.MapScalarApiReference(options =>
+ options.OpenApiRoutePattern = $"/swagger/{swaggerApiDefinition.Version}/swagger.json");
+ }
+}
diff --git a/src/OrchardCoreContrib.Modules.Web/OrchardCoreContrib.Modules.Web.csproj b/src/OrchardCoreContrib.Modules.Web/OrchardCoreContrib.Modules.Web.csproj
index 64056c4..72f92ec 100644
--- a/src/OrchardCoreContrib.Modules.Web/OrchardCoreContrib.Modules.Web.csproj
+++ b/src/OrchardCoreContrib.Modules.Web/OrchardCoreContrib.Modules.Web.csproj
@@ -7,6 +7,7 @@
+