diff --git a/Elsa.sln b/Elsa.sln
index 5b77b51cf..a2377d49a 100644
--- a/Elsa.sln
+++ b/Elsa.sln
@@ -267,6 +267,7 @@ ProjectSection(SolutionItems) = preProject
docker\Dockerfile = docker\Dockerfile
docker\Dockerfile-with-npm = docker\Dockerfile-with-npm
docker\README.md = docker\README.md
+ docker\Dockerfile-elsa-dashboard = docker\Dockerfile-elsa-dashboard
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Persistence.EntityFramework.MySql", "src\persistence\Elsa.Persistence.EntityFramework\Elsa.Persistence.EntityFramework.MySql\Elsa.Persistence.EntityFramework.MySql.csproj", "{D55BC08B-CA82-478A-99F7-EDE90AC33160}"
@@ -275,6 +276,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.SendHttp", "sr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.CustomActivityOutcomes", "src\samples\console\Elsa.Samples.CustomActivityOutcomes\Elsa.Samples.CustomActivityOutcomes.csproj", "{30A9B140-14F5-4D00-84ED-1447F96D13C8}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnetcore", "aspnetcore", "{28C5C63F-2DCF-46BE-9576-1F50A7CFE8C4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Web", "src\dashboards\aspnetcore\ElsaDashboard\ElsaDashboard.Web.csproj", "{5F81C84A-4C04-48FF-981C-23E48A7ACA6C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -657,6 +662,10 @@ Global
{30A9B140-14F5-4D00-84ED-1447F96D13C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30A9B140-14F5-4D00-84ED-1447F96D13C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30A9B140-14F5-4D00-84ED-1447F96D13C8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5F81C84A-4C04-48FF-981C-23E48A7ACA6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5F81C84A-4C04-48FF-981C-23E48A7ACA6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5F81C84A-4C04-48FF-981C-23E48A7ACA6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5F81C84A-4C04-48FF-981C-23E48A7ACA6C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -785,6 +794,8 @@ Global
{D55BC08B-CA82-478A-99F7-EDE90AC33160} = {C865B0FD-E505-48F0-BFAF-0D4D7C1B5CA1}
{775EFD59-F99C-4D38-B54E-9734C9D9649A} = {22E75696-6FE9-436A-9097-EE21C603F818}
{30A9B140-14F5-4D00-84ED-1447F96D13C8} = {FC9F520F-BA51-4AD2-BFEE-EF787798E734}
+ {28C5C63F-2DCF-46BE-9576-1F50A7CFE8C4} = {164EB38A-D6D2-4092-8835-C944ECEE357C}
+ {5F81C84A-4C04-48FF-981C-23E48A7ACA6C} = {28C5C63F-2DCF-46BE-9576-1F50A7CFE8C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8B0975FD-7050-48B0-88C5-48C33378E158}
diff --git a/docker/Dockerfile b/docker/Dockerfile
index f1423aa73..112164087 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -12,13 +12,11 @@ COPY src/. ./src
COPY *.props ./
COPY ./Nuget.Config ./
-
# build and publish (UseAppHost=false created platform independent binaries)
WORKDIR /source/src/samples/dashboard/aspnetcore/ElsaDashboard.Samples.AspNetCore.Monolith
RUN dotnet build "ElsaDashboard.Samples.AspNetCore.Monolith.csproj" -c Release -o /app/build
RUN dotnet publish "ElsaDashboard.Samples.AspNetCore.Monolith.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore
-
# move binaries into smaller base image
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
diff --git a/docker/Dockerfile-elsa-dashboard b/docker/Dockerfile-elsa-dashboard
new file mode 100644
index 000000000..3a7dd9eb7
--- /dev/null
+++ b/docker/Dockerfile-elsa-dashboard
@@ -0,0 +1,40 @@
+FROM node:15-alpine as client-build
+
+WORKDIR /app
+COPY /src .
+
+WORKDIR /app/designer/elsa-workflows-studio
+RUN npm install --force
+RUN npm run build
+
+WORKDIR /app/designer/bindings/aspnet/Elsa.Designer.Components.Web
+RUN npm install --force
+RUN npm run build
+
+FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim-amd64 AS build
+WORKDIR /source
+
+# restore packages
+COPY ./src/dashboards/aspnetcore/ElsaDashboard/ElsaDashboard.Web.csproj ./src/dashboards/aspnetcore/ElsaDashboard/ElsaDashboard.Web.csproj
+RUN dotnet restore "./src/dashboards/aspnetcore/ElsaDashboard/ElsaDashboard.Web.csproj"
+
+# copy required source code
+COPY src/. ./src
+COPY *.props ./
+COPY ./Nuget.Config ./
+COPY --from=client-build /app/designer/elsa-workflows-studio ./src/designer/elsa-workflows-studio
+COPY --from=client-build /app/designer/bindings/aspnet/Elsa.Designer.Components.Web ./src/designer/bindings/aspnet/Elsa.Designer.Components.Web
+
+# build and publish (UseAppHost=false created platform independent binaries)
+WORKDIR /source/src/dashboards/aspnetcore/ElsaDashboard
+RUN dotnet build "ElsaDashboard.Web.csproj" -c Release -o /app/build
+RUN dotnet publish "ElsaDashboard.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore
+
+# move binaries into smaller base image
+FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
+WORKDIR /app
+COPY --from=build /app/publish ./
+
+EXPOSE 80/tcp
+EXPOSE 443/tcp
+ENTRYPOINT ["dotnet", "ElsaDashboard.Web.dll"]
diff --git a/docker/README.md b/docker/README.md
index 5155f80fc..7db896ff7 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -3,7 +3,7 @@
Clone the repository and open a command line in the project root folder. Then you can run the two docker commands below to build and start the container. Alternatively you can use the provided docker-compose file in the docker folder that does it for you via `docker-compuse up -d`. The docker-compose file will also include a fake smtp server to test email delivery.
```
-$ docker build -t elsadashboard:local -f ./docker/Dockerfile-with-npm .
+$ docker build -t elsadashboardwithserver:local -f ./docker/Dockerfile-with-npm .
$ docker run -t -i -e Elsa__Server__BaseAddress='http://localhost:6868' -e ASPNETCORE_ENVIRONMENT='Development' -p 6868:80 elsadashboard:latest
```
diff --git a/src/dashboards/aspnetcore/ElsaDashboard/ElsaDashboard.Web.csproj b/src/dashboards/aspnetcore/ElsaDashboard/ElsaDashboard.Web.csproj
new file mode 100644
index 000000000..69d0c96f3
--- /dev/null
+++ b/src/dashboards/aspnetcore/ElsaDashboard/ElsaDashboard.Web.csproj
@@ -0,0 +1,11 @@
+