Ever gone through the pain of setting up new Projects from scratch each and every time? fullstackhero aims to
+address this pain point by offering Starting Points aka Boilerplates for various technologies that can help save
+over 200+ hours of Development and Research Time for Developers and Teams.
+
+## Solution
+
+
fullstackhero offers Boilerplates with latest packages and services that your projects will ever need. We intend to provide Clean and Well structured Boilerplates with top-notch quality following standard coding practices and Clean Architecture principles that makes your development experience seamless.
+
+
Most importantly, fullstackhero is completely FREE to use!
+
+As the name suggests, the idea is to provide a full-stack end to end solution to kick start products of any scale following a modularized monolith architecture with well cut designs, code readability, scalability as the out-of-the-box features. Bottomline, using fullstackhero, your new projects will be up and running in no time.
+
+
+## Vision
+
+fullstackhero is not a single repository or project, rather a collection of boilerplates out of which you get to choose your preference. In the long term, fullstackhero would ideally have multiple API projects that are written in various technologies like .NET, Node.js, GoLang and multiple client applications that are built on awesome tech like Blazor, Vue.js, React, Angular and so on.
+
+fullstackhero should be the one-stop that caters to the needs of various developers in various technology. This obviously would require a lot of community adaptation and contributions.
+
+As of the initial releases, fullstackhero sports an API Project built on Microsoft's newest .NET 7 and the front-end application (that consumes the .NET 7 Web API) built with Blazor WebAssembly!
+
+## Projects
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/_index.md b/content/en/blazor-webassembly-boilerplate/_index.md
new file mode 100644
index 00000000..85a33c07
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/_index.md
@@ -0,0 +1,9 @@
+---
+title : "Blazor WebAssembly Boilerplate"
+description: "Essential Documentation for the Blazor WebAssembly Boilerplate project."
+lead: ""
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-23T01:58:00+05:30
+draft: false
+images: []
+---
diff --git a/content/en/blazor-webassembly-boilerplate/fullstackhero-blazor-wasm-banner.png b/content/en/blazor-webassembly-boilerplate/fullstackhero-blazor-wasm-banner.png
new file mode 100644
index 00000000..d2f24b98
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/fullstackhero-blazor-wasm-banner.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/general/_index.md b/content/en/blazor-webassembly-boilerplate/general/_index.md
new file mode 100644
index 00000000..21a9fca0
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/general/_index.md
@@ -0,0 +1,9 @@
+---
+title : "General"
+description: "fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-23T02:00:55+05:30
+lead: ""
+draft: false
+images: []
+---
diff --git a/content/en/blazor-webassembly-boilerplate/general/development-environment.md b/content/en/blazor-webassembly-boilerplate/general/development-environment.md
new file mode 100644
index 00000000..7ccad7f6
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/general/development-environment.md
@@ -0,0 +1,44 @@
+---
+title: "Development Environment"
+description: "Setting up the Development Environment for the Blazor WebAssembly Boilerplate"
+lead: "Let's get started with setting up the Development Environment for Blazor WebAssembly Boilerplate Development!"
+date: 2021-08-30T00:59:34+05:30
+lastmod: 2021-10-15T08:54:03+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "general-development-environment"
+ name: "Development Environment"
+ parent: "general"
+weight: 2
+toc: true
+---
+fullstackhero's **Blazor WebAssembly Boilerplate** Project Development needs you to have the following applications / tools available on your machine. Please Note that this project is being built on a Windows 10 Machine using Visual Studio Code IDE.
+
+## .NET SDK
+
+As mentioned earlier, this project is built with the latest available .NET SDK, which is .NET 6.0.
+
+Ensure that you have the latest version of the SDK available - [Download from Microsoft](https://dotnet.microsoft.com/download/dotnet/6.0)
+
+{{< alert icon="đĄ" text="Note : At the time of compiling this documentation, the latest version available was SDK 6.0.200" />}}
+
+
+## IDE
+
+Visual Studio Code IDE is the recommended IDE to use for fullstackhero's Blazor WebAssembly Boilerplate Project Development. If you are not already using this IDE, consider switching to it. It's definitely worth it! (_Fun Fact : I recently switched from Visual Studio 2019 Community to Visual Studio Code and it's been awesome!_)
+
+However, you are always free to use your choice of IDEs as well.
+
+Incase you intend to use Visual Studio Code for development, here are a bunch of helpful extensions that I use:
+- EditorConfig for VS Code
+- C#
+- C# Extensions
+- Docker
+- Markdown All in One
+- NuGet Gallery
+- Material Icon Theme
+- REST Client
+
+{{< alert icon="đĄ" text="Note : All the screenshots included in these documentations are from Visual Studio Code Point of View." />}}
diff --git a/content/en/blazor-webassembly-boilerplate/general/getting-started/index.md b/content/en/blazor-webassembly-boilerplate/general/getting-started/index.md
new file mode 100644
index 00000000..5f8c9cce
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/general/getting-started/index.md
@@ -0,0 +1,100 @@
+---
+title: "Getting Started đ"
+description: "Getting Started with fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Getting Started with fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "general-getting-started"
+ name: "Getting Started đ"
+ parent: "general"
+weight: 3
+toc: true
+---
+
+Firstly, make sure that you have already setup your development environment that runs the prerequisite tools and SDKs. Refer [Development Environment](/blazor-webassembly-boilerplate/general/development-environment/) for details.
+
+
+To get started with this Boilerplate, here are the avaiable options.
+
+- Fork the Repository. Use this if you want to always keep your version of the Boilerplate up-to date with the latest changes.
+- Install using dotnet new . Use this for release versions of the Boilerplate only. Note that this option is currently unavailable for Blazor WASM Boilerplate.
+
+## Forking the Repository
+
+You would probably need to take this approach if you want to keep your source code upto date with the latest changes. To get started based on this repository, you need to get a copy locally. You have three options: fork, clone, or download.
+
+- Make a fork of fullstackhero's `blazor-wasm-boilerplate` repository in your Github account.
+- Next, since you need to start your private personal project, create your new `blazor-wasm-boilerplate` personal project by cloning the forked repository on your personal github. This could be done as simple as running `git clone https://github.com/{yourgithubuseraccount}/blazor-wasm-boilerplate.git` locally on your development machine.
+- Setup an upstream remote on your personal project pointing to your forked repository using command `git remote add upstream https://github.com/{yourgithubuseraccount}/blazor-wasm-boilerplate` and `git remote set-url --push upstream DISABLE`
+
+Now, whenever there is a new update on fullstackhero's `blazor-wasm-boilerplate` repository, you could simply pull in the latest change on your private fork of the fullstackhero's `blazor-wasm-boilerplate` repository and later merge these changes with you personal projects.
+
+For step by step instructions, [follow this](https://discord.com/channels/878181478972928011/892573122186838046/933513103688224838) and [this](https://gist.github.com/0xjac/85097472043b697ab57ba1b1c7530274).
+
+## Installing NuGet Package
+
+This is by far the easiest and the most streamlined way of getting the latest available `Release version` of fullstackhero Blazor WebAssembly Boilerplate.
+
+Open up your Command Prompt / Powershell and run the following command to install the solution template.
+
+```powershell
+dotnet new --install FullStackHero.BlazorWebAssembly.Boilerplate
+```
+or, if you want to use a specific version of the boilerplate, use
+
+```powershell
+dotnet new --install FullStackHero.BlazorWebAssembly.Boilerplate::0.0.1-rc
+```
+This would install the `fullstackhero Blazor WebAssembly Boilerplate` template globally on your machine. Do note that, at the time of writing this documentation, the latest available version is **0.0.1-rc** which is also one of the first stable pre-release version of the package. It is highly likely that there is already a newer version available when you are reading this.
+
+> *To get the latest version of the package, visit [nuget.org](https://www.nuget.org/packages/FullStackHero.BlazorWebAssembly.Boilerplate/)*
+>
+> *FullStackHero.BlazorWebAssembly.Boilerplate is now in pre-release state. You can find the latest version on NuGet.org*
+
+{{< alert text="FullStackHero.BlazorWebAssembly.Boilerplate::0.0.1-rc is compatible only with FullStackHero.WebAPI.Boilerplate::0.0.6-rc and above." />}}
+
+
+
+Get the .NET WebApi Boilerplate by running the following command
+
+```
+dotnet new --install FullStackHero.WebAPI.Boilerplate::0.0.6-rc
+```
+
+### Creating your First Solution
+
+> Note that this is not valid only if you have installed the NuGet package of this Boilerplate.
+
+Now that you have installed the template locally on your machine, let's see how you can start generating Blazor Web Assembly Projects.
+
+Simply navigate to a new directory (wherever you want to place your new solution at), and open up Command Prompt at the opened directory.
+
+Run the following command. Note that, in this demonstration I am naming my new solution as `FSH.Blazor`.
+
+```powershell
+dotnet new fsh-blazor -o FSH.Blazor
+```
+
+Once that is done, your new solution is created for you. As simple as that!
+
+## Running the Application
+
+Firstly, keep in mind that this is a client application that actually consumes data by sending HTTP Requests to the API Server. Thus, you need to make sure that the API is up and running.
+
+To learn about setting up the API Server, refer [Getting Started with fullstackhero's .NET Web API](/dotnet-webapi-boilerplate/general/getting-started/).
+
+Once the Server is up and running, like any other Blazor application, simply navigate to the Host folder under the source folder of the Blazor Project (`\src\Host`) and run the following standard commands.
+
+- `dotnet restore`
+- `dotnet build`
+- `dotnet run`
+
+Once the build process is complete, the application would be reachable by accessing `https://localhost:5002` on your browser.
+
+By default, the API Server is set to be running on port 5001 of your local machine. If for some port related reason, you have to run the API on another port or so, navigate to `src\Client\wwwroot\appsettings.json` of the Blazor Project and change the API Base URL Property and set the value to the port that's exposing the API. This is the default configuration `"ApiBaseUrl": "https://localhost:5001/"`.
+
+Similarly, the Blazor Project by default is set to run on port 5003 of your local machine. Incase you change this to something else, ensure that you have updated the cors.json configuration file on your API project. This makes sure that there is no CORS related issues while the Blazor project tries to access the API Endpoints.
diff --git a/content/en/blazor-webassembly-boilerplate/general/overview.md b/content/en/blazor-webassembly-boilerplate/general/overview.md
new file mode 100644
index 00000000..3dbebcd9
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/general/overview.md
@@ -0,0 +1,59 @@
+---
+title: "Overview"
+description: "Built with .NET 6.0 and the goodness of MudBlazor Component Library. Incorporates the most essential Packages your projects will ever need. Follows Clean Architecture Principles."
+lead: "Built with .NET 6.0 and the goodness of MudBlazor Component Library. Incorporates the most essential Packages your projects will ever need. Follows Clean Architecture Principles."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2022-02-26T20:18:26+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "general-overview"
+ name: "Overview"
+ parent: "general"
+weight: 1
+toc: true
+---
+
+
+## Goals
+
+The goal of this repository is to help developers / companies kickstart their Web Application Development with a pre-built Blazor WebAssembly Boilerplate that includes several much needed components and features.
+
+> Note that this is a frontend / client application only! The backend for this application is available in a seperate repository.
+> - Find fullstackhero's .NET 6 Web API Boilerplate here - https://github.com/fullstackhero/dotnet-webapi-boilerplate
+
+## Prerequisites
+
+- Make sure you have the API Running. Here is FSH Backend - https://github.com/fullstackhero/dotnet-webapi-boilerplate
+- Once fullstackhero's .NET 6 Web API is up and running, run the Blazor WebAssembly Project to consume it's services.
+
+## Community
+
+- Discord [@fullstackhero](https://discord.gg/gdgHRt4mMw)
+- Facebook Page [@codewithmukesh](https://facebook.com/codewithmukesh)
+- Youtube Channel [@codewithmukesh](https://youtube.com/c/codewithmukesh)
+
+## Contributors
+
+Submit your PR and join the elite list!
+
+
+
+
+
+## License
+
+This project is licensed with the [MIT license](LICENSE).
+
+## Support :star:
+
+Has this Project helped you learn something New? or Helped you at work?
+Here are a few ways by which you can support.
+
+- Leave a star! :star:
+- Recommend this awesome project to your colleagues. đĨ
+- Do consider endorsing me on LinkedIn for ASP.NET Core - [Connect via LinkedIn](https://codewithmukesh.com/linkedin) đϏ
+- Or, If you want to support this project in the long run, [consider buying me a coffee](https://www.buymeacoffee.com/codewithmukesh)! â
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/_index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/_index.md
new file mode 100644
index 00000000..44b8914c
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/_index.md
@@ -0,0 +1,9 @@
+---
+title : "UI Overview"
+description: "Sneak Peak of fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-23T02:00:55+05:30
+lead: ""
+draft: false
+images: []
+---
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/account/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/account/index.md
new file mode 100644
index 00000000..732d2dc7
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/account/index.md
@@ -0,0 +1,18 @@
+---
+title: "Account"
+description: "Account Page in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Account Page in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-account"
+ name: "Account"
+ parent: "ui-overview"
+weight: 104
+toc: true
+---
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/forgot-password.png b/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/forgot-password.png
new file mode 100644
index 00000000..b1e596b0
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/forgot-password.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/index.md
new file mode 100644
index 00000000..188589dc
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/index.md
@@ -0,0 +1,36 @@
+---
+title: "Authentication"
+description: "Auth Related Pages / Components in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Auth Related Pages / Components in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-authentication"
+ name: "Authentication"
+ parent: "ui-overview"
+weight: 101
+toc: true
+---
+
+## Login
+
+Here is what you would be welcomed with, the login page! You can auto-fill the default username / password & tenant by clicking on the `Fill Administrator Credentials` button.
+
+Anyways, here are the default login details for your reference.
+
+- email - `admin@root.com`
+- password - `123Pa$$word!`
+- tenant - `root`
+
+{{< alert text="Make sure that you use valid tenant values! By default, only root tenant is created for you." />}}
+
+{{< img src="login.png" >}}
+
+## Forgot Password
+
+In case, you happen to forget your password, the application has the functionailty to reset the password for you.
+
+{{< img src="forgot-password.png" >}}
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/login.png b/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/login.png
new file mode 100644
index 00000000..348cc509
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/authentication/login.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/catalog-management/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/catalog-management/index.md
new file mode 100644
index 00000000..c9d89ef1
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/catalog-management/index.md
@@ -0,0 +1,18 @@
+---
+title: "Catalog Management"
+description: "Catalog Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Catalog Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-catalog-management"
+ name: "Catalog Management"
+ parent: "ui-overview"
+weight: 106
+toc: true
+---
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/dashboard/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/dashboard/index.md
new file mode 100644
index 00000000..f8b10a92
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/dashboard/index.md
@@ -0,0 +1,18 @@
+---
+title: "Dashboard"
+description: "Dashboard in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Dashboard in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-dashboard"
+ name: "Dashboard"
+ parent: "ui-overview"
+weight: 103
+toc: true
+---
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/dialogs/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/dialogs/index.md
new file mode 100644
index 00000000..48bbc58d
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/dialogs/index.md
@@ -0,0 +1,20 @@
+---
+title: "Dialogs"
+description: "Exploring Dialogs fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Exploring Dialogs fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-dialogs"
+ name: "Dialogs"
+ parent: "ui-overview"
+weight: 109
+toc: true
+---
+
+## LogOut
+
+## Confirmation
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/body.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/body.png
new file mode 100644
index 00000000..433531b7
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/body.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/border-radius.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/border-radius.png
new file mode 100644
index 00000000..e14fefc3
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/border-radius.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/color-code.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/color-code.png
new file mode 100644
index 00000000..ea5eac49
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/color-code.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/colors.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/colors.png
new file mode 100644
index 00000000..bc089a23
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/colors.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/dark-mode.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/dark-mode.png
new file mode 100644
index 00000000..f7353dda
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/dark-mode.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/default-pallete.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/default-pallete.png
new file mode 100644
index 00000000..2de5a5a1
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/default-pallete.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/index.md
new file mode 100644
index 00000000..d83a294e
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/index.md
@@ -0,0 +1,81 @@
+---
+title: "Fundamentals"
+description: "Exploring fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Exploring fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-fundamentals"
+ name: "Fundamentals"
+ parent: "ui-overview"
+weight: 100
+toc: true
+---
+
+Here are some of the general components, features and pages that you get to see in fullstackhero's Blazor WebAssembly Boilerplate.
+
+## Loading Screen
+
+The following is the dedault loading screen of the template.
+
+You can tweak around the appearance by modifying `\src\Client\wwwroot\index.html`.
+
+{{< img src="loading.png" >}}
+
+## Basic Layout
+
+By default, the boilerplate sports an ADMIN Dashboard template that is mostly used for Management of Entities.
+
+### Navigation Bar
+
+{{< img src="nav-bar.png" >}}
+
+### Side Menu
+
+{{< img src="nav-menu.png" >}}
+
+### Body
+
+{{< img src="body.png" >}}
+
+## Theme Manager
+
+fullstackhero's Blazor WebAssembly Boilerplate comes with a built-in theme manager that helps you customize various UI aspects right from primary colors to the radius of the containers with ease. You can view the Theme Manager component by clicking on the Paint Icon that you would see on every page of the boilerplate.
+
+Note that each of the configuration changes you make get stored to your browser's localstorage.
+
+{{< img src="theme-manager.png" >}}
+
+### Dark Mode
+
+Easily Switch to Dark / Light Mode with a toggle that you find on the theme manager!
+
+{{< img src="dark-mode.png" >}}
+
+### Colors
+
+Here you get to set the Primary and Secondary colors used by the Blazor Application and personalize the already rich UI Boilerplate.
+
+{{< img src="colors.png" >}}
+
+{{< img src="default-pallete.png" >}}
+
+Not finding the color that you need? You can easily add new colors to this pallete by changing some code!
+
+In the below screenshot you can find the default 12 colors defined in code.
+
+{{< img src="color-code.png" >}}
+
+### Border Radius
+
+The Adjustable Slider helps you manipulate the Borders of the UI components.
+
+{{< img src="border-radius.png" >}}
+
+### Table Customization
+
+{{< img src="table-customization.png" >}}
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/loading.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/loading.png
new file mode 100644
index 00000000..9207259c
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/loading.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/nav-bar.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/nav-bar.png
new file mode 100644
index 00000000..71cd370f
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/nav-bar.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/nav-menu.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/nav-menu.png
new file mode 100644
index 00000000..9d3e0ea9
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/nav-menu.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/table-customization.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/table-customization.png
new file mode 100644
index 00000000..9de7daf6
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/table-customization.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/theme-manager.png b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/theme-manager.png
new file mode 100644
index 00000000..570fa13c
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/fundamentals/theme-manager.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/home/home.png b/content/en/blazor-webassembly-boilerplate/ui-overview/home/home.png
new file mode 100644
index 00000000..3545e8ac
Binary files /dev/null and b/content/en/blazor-webassembly-boilerplate/ui-overview/home/home.png differ
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/home/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/home/index.md
new file mode 100644
index 00000000..0b2c3eeb
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/home/index.md
@@ -0,0 +1,19 @@
+---
+title: "Home"
+description: "Home Page in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Home Page in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-home"
+ name: "Home"
+ parent: "ui-overview"
+weight: 102
+toc: true
+---
+
+
+{{< img src="home.png" >}}
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/logs/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/logs/index.md
new file mode 100644
index 00000000..9590255a
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/logs/index.md
@@ -0,0 +1,18 @@
+---
+title: "Logs"
+description: "Logs Page in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Logs Page in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-logs"
+ name: "Logs"
+ parent: "ui-overview"
+weight: 105
+toc: true
+---
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/role-management/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/role-management/index.md
new file mode 100644
index 00000000..f7ee428d
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/role-management/index.md
@@ -0,0 +1,18 @@
+---
+title: "Role Management"
+description: "Role Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Role Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-role-management"
+ name: "Role Management"
+ parent: "ui-overview"
+weight: 107
+toc: true
+---
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/tenant-management/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/tenant-management/index.md
new file mode 100644
index 00000000..dd255fe5
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/tenant-management/index.md
@@ -0,0 +1,18 @@
+---
+title: "Tenant Management"
+description: "Tenant Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "Tenant Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-tenant-management"
+ name: "Tenant Management"
+ parent: "ui-overview"
+weight: 108
+toc: true
+---
+
+
diff --git a/content/en/blazor-webassembly-boilerplate/ui-overview/user-management/index.md b/content/en/blazor-webassembly-boilerplate/ui-overview/user-management/index.md
new file mode 100644
index 00000000..ac49e646
--- /dev/null
+++ b/content/en/blazor-webassembly-boilerplate/ui-overview/user-management/index.md
@@ -0,0 +1,18 @@
+---
+title: "User Management"
+description: "User Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+lead: "User Management Pages in fullstackhero's Blazor WebAssembly Boilerplate."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ blazor-webassembly-boilerplate:
+ identifier: "ui-overview-user-management"
+ name: "User Management"
+ parent: "ui-overview"
+weight: 106
+toc: true
+---
+
+
diff --git a/content/blog/_index.md b/content/en/blog/_index.md
similarity index 100%
rename from content/blog/_index.md
rename to content/en/blog/_index.md
diff --git a/content/en/blog/say-hello-to-doks/index.md b/content/en/blog/say-hello-to-doks/index.md
new file mode 100644
index 00000000..e9c31858
--- /dev/null
+++ b/content/en/blog/say-hello-to-doks/index.md
@@ -0,0 +1,11 @@
+---
+title: "Say hello to Doks đ"
+description: "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready â by default."
+lead: "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready â by default."
+date: 2020-11-04T09:19:42+01:00
+lastmod: 2020-11-04T09:19:42+01:00
+draft: false
+weight: 50
+images: ["say-hello-to-doks.png"]
+contributors: ["Henk Verlinde"]
+---
diff --git a/content/en/blog/say-hello-to-doks/say-hello-to-doks.png b/content/en/blog/say-hello-to-doks/say-hello-to-doks.png
new file mode 100644
index 00000000..70d8c786
Binary files /dev/null and b/content/en/blog/say-hello-to-doks/say-hello-to-doks.png differ
diff --git a/content/contact/index.md b/content/en/contact/index.md
similarity index 100%
rename from content/contact/index.md
rename to content/en/contact/index.md
diff --git a/content/contributors/_index.md b/content/en/contributors/_index.md
similarity index 63%
rename from content/contributors/_index.md
rename to content/en/contributors/_index.md
index eebaac38..e225f344 100644
--- a/content/contributors/_index.md
+++ b/content/en/contributors/_index.md
@@ -1,8 +1,8 @@
---
title: "Contributors"
description: "The Doks contributors."
-date: 2021-08-24T11:40:05+05:30
-lastmod: 2021-08-24T11:40:16+05:30
+date: 2020-10-06T08:50:29+00:00
+lastmod: 2020-10-06T08:50:29+00:00
draft: false
images: []
---
diff --git a/content/en/contributors/henk-verlinde/_index.md b/content/en/contributors/henk-verlinde/_index.md
new file mode 100644
index 00000000..f775534e
--- /dev/null
+++ b/content/en/contributors/henk-verlinde/_index.md
@@ -0,0 +1,12 @@
+---
+title: "Henk Verlinde"
+description: "Creator of Hyas."
+date: 2020-10-06T08:50:45+00:00
+lastmod: 2020-10-06T08:50:45+00:00
+draft: false
+images: []
+---
+
+Creator of Hyas.
+
+[@HenkVerlinde](https://twitter.com/henkverlinde)
diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md
new file mode 100644
index 00000000..f807c652
--- /dev/null
+++ b/content/en/docs/_index.md
@@ -0,0 +1,9 @@
+---
+title : "Docs"
+description: "Docs Doks."
+lead: ""
+date: 2020-10-06T08:48:23+00:00
+lastmod: 2020-10-06T08:48:23+00:00
+draft: false
+images: []
+---
diff --git a/content/en/docs/help/_index.md b/content/en/docs/help/_index.md
new file mode 100644
index 00000000..bc503ecf
--- /dev/null
+++ b/content/en/docs/help/_index.md
@@ -0,0 +1,9 @@
+---
+title: "Help"
+description: "Help Doks."
+lead: ""
+date: 2020-10-06T08:49:15+00:00
+lastmod: 2020-10-06T08:49:15+00:00
+draft: false
+images: []
+---
diff --git a/content/en/docs/help/faq.md b/content/en/docs/help/faq.md
new file mode 100644
index 00000000..f0c3bb4d
--- /dev/null
+++ b/content/en/docs/help/faq.md
@@ -0,0 +1,50 @@
+---
+title: "FAQ"
+description: "Answers to frequently asked questions."
+lead: "Answers to frequently asked questions."
+date: 2020-10-06T08:49:31+00:00
+lastmod: 2020-10-06T08:49:31+00:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "help"
+weight: 630
+toc: true
+---
+
+## Hyas?
+
+Doks is a [Hyas theme](https://gethyas.com/themes/) build by the creator of Hyas.
+
+## Footer notice?
+
+Please keep it in place.
+
+## Keyboard shortcuts for search?
+
+- focus: `Ctrl + /`
+- select: `â` and `â`
+- open: `Enter`
+- close: `Esc`
+
+## Other documentation?
+
+- [Netlify](https://docs.netlify.com/)
+- [Hugo](https://gohugo.io/documentation/)
+
+## Can I get support?
+
+Create a topic:
+
+- [Netlify Community](https://community.netlify.com/)
+- [Hugo Forums](https://discourse.gohugo.io/)
+- [Doks Discussions](https://github.com/h-enk/doks/discussions)
+
+## Contact the creator?
+
+Send `h-enk` a message:
+
+- [Netlify Community](https://community.netlify.com/)
+- [Hugo Forums](https://discourse.gohugo.io/)
+- [Doks Discussions](https://github.com/h-enk/doks/discussions)
diff --git a/content/en/docs/help/how-to-update.md b/content/en/docs/help/how-to-update.md
new file mode 100644
index 00000000..f9bb36b9
--- /dev/null
+++ b/content/en/docs/help/how-to-update.md
@@ -0,0 +1,32 @@
+---
+title: "How to Update"
+description: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
+lead: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
+date: 2020-11-12T13:26:54+01:00
+lastmod: 2020-11-12T13:26:54+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "help"
+weight: 610
+toc: true
+---
+
+{{< alert icon="đĄ" text="Learn more about semantic versioning and advanced range syntax." />}}
+
+## Check for outdated packages
+
+The [`npm outdated`](https://docs.npmjs.com/cli/v7/commands/npm-outdated) command will check the registry to see if any (or, specific) installed packages are currently outdated:
+
+```bash
+npm outdated [[<@scope>/] ...]
+```
+
+## Update packages
+
+The [`npm update`](https://docs.npmjs.com/cli/v7/commands/npm-update) command will update all the packages listed to the latest version (specified by the tag config), respecting semver:
+
+```bash
+npm update [...]
+```
diff --git a/content/en/docs/help/troubleshooting.md b/content/en/docs/help/troubleshooting.md
new file mode 100644
index 00000000..0d52dbb1
--- /dev/null
+++ b/content/en/docs/help/troubleshooting.md
@@ -0,0 +1,30 @@
+---
+title: "Troubleshooting"
+description: "Solutions to common problems."
+lead: "Solutions to common problems."
+date: 2020-11-12T15:22:20+01:00
+lastmod: 2020-11-12T15:22:20+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "help"
+weight: 620
+toc: true
+---
+
+## Problems updating npm packages
+
+Delete the `./node_modules` folder, and run again:
+
+```bash
+npm install
+```
+
+## Problems with cache
+
+Delete the temporary directories:
+
+```bash
+npm run clean
+```
diff --git a/content/en/docs/lorem/_index.md b/content/en/docs/lorem/_index.md
new file mode 100644
index 00000000..86fcd8fc
--- /dev/null
+++ b/content/en/docs/lorem/_index.md
@@ -0,0 +1,10 @@
+---
+title: "Lorem"
+description: ""
+lead: ""
+date: 2022-01-18T19:58:14+01:00
+lastmod: 2022-01-18T19:58:14+01:00
+draft: true
+images: []
+toc: true
+---
diff --git a/content/en/docs/lorem/ipsum/_index.md b/content/en/docs/lorem/ipsum/_index.md
new file mode 100644
index 00000000..e575fc5c
--- /dev/null
+++ b/content/en/docs/lorem/ipsum/_index.md
@@ -0,0 +1,15 @@
+---
+title: "Ipsum"
+description: ""
+lead: ""
+date: 2022-01-18T20:00:32+01:00
+lastmod: 2022-01-18T20:00:32+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "lorem"
+ identifier: "ipsum"
+weight: 999
+toc: true
+---
diff --git a/content/en/docs/lorem/ipsum/amet/_index.md b/content/en/docs/lorem/ipsum/amet/_index.md
new file mode 100644
index 00000000..dbbeabde
--- /dev/null
+++ b/content/en/docs/lorem/ipsum/amet/_index.md
@@ -0,0 +1,15 @@
+---
+title: "Amet"
+description: ""
+lead: ""
+date: 2022-01-18T20:07:56+01:00
+lastmod: 2022-01-18T20:07:56+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "ipsum"
+ identifier: "amet"
+weight: 999
+toc: true
+---
diff --git a/content/en/docs/lorem/ipsum/amet/consectetur/index.md b/content/en/docs/lorem/ipsum/amet/consectetur/index.md
new file mode 100644
index 00000000..23771e32
--- /dev/null
+++ b/content/en/docs/lorem/ipsum/amet/consectetur/index.md
@@ -0,0 +1,14 @@
+---
+title: "Consectetur"
+description: ""
+lead: ""
+date: 2022-01-18T20:17:32+01:00
+lastmod: 2022-01-18T20:17:32+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "amet"
+weight: 730
+toc: true
+---
diff --git a/content/en/docs/lorem/ipsum/dolor/index.md b/content/en/docs/lorem/ipsum/dolor/index.md
new file mode 100644
index 00000000..a744e72b
--- /dev/null
+++ b/content/en/docs/lorem/ipsum/dolor/index.md
@@ -0,0 +1,14 @@
+---
+title: "Dolor"
+description: ""
+lead: ""
+date: 2022-01-18T20:01:45+01:00
+lastmod: 2022-01-18T20:01:45+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "ipsum"
+weight: 700
+toc: true
+---
diff --git a/content/en/docs/lorem/ipsum/sit/index.md b/content/en/docs/lorem/ipsum/sit/index.md
new file mode 100644
index 00000000..e4c84e4d
--- /dev/null
+++ b/content/en/docs/lorem/ipsum/sit/index.md
@@ -0,0 +1,14 @@
+---
+title: "Sit"
+description: ""
+lead: ""
+date: 2022-01-18T20:05:19+01:00
+lastmod: 2022-01-18T20:05:19+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "ipsum"
+weight: 710
+toc: true
+---
diff --git a/content/en/docs/prologue/_index.md b/content/en/docs/prologue/_index.md
new file mode 100644
index 00000000..c3c1c40b
--- /dev/null
+++ b/content/en/docs/prologue/_index.md
@@ -0,0 +1,9 @@
+---
+title : "Prologue"
+description: "Prologue Doks."
+lead: ""
+date: 2020-10-06T08:48:45+00:00
+lastmod: 2020-10-06T08:48:45+00:00
+draft: false
+images: []
+---
diff --git a/content/en/docs/prologue/commands.md b/content/en/docs/prologue/commands.md
new file mode 100644
index 00000000..e647a98e
--- /dev/null
+++ b/content/en/docs/prologue/commands.md
@@ -0,0 +1,98 @@
+---
+title: "Commands"
+description: "Doks comes with commands for common tasks."
+lead: "Doks comes with commands for common tasks."
+date: 2020-10-13T15:21:01+02:00
+lastmod: 2020-10-13T15:21:01+02:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "prologue"
+weight: 130
+toc: true
+---
+
+{{< alert icon="đĄ" text="You can change the commands in the scripts section of `./package.json`." />}}
+
+## create
+
+Create new content for your site:
+
+```bash
+npm run create [path] [flags]
+```
+
+See also the Hugo docs: [hugo new](https://gohugo.io/commands/hugo_new/).
+
+## lint
+
+Check scripts, styles, and markdown for errors:
+
+```bash
+npm run lint
+```
+
+### scripts
+
+Check scripts for errors:
+
+```bash
+npm run lint:scripts [-- --fix]
+```
+
+### styles
+
+Check styles for errors:
+
+```bash
+npm run lint:styles [-- --fix]
+```
+
+### markdown
+
+Check markdown for errors:
+
+```bash
+npm run lint:markdown [-- --fix]
+```
+
+## clean
+
+Delete temporary directories:
+
+```bash
+npm run clean
+```
+
+## start
+
+Start local development server:
+
+```bash
+npm run start
+```
+
+## build
+
+Build production website:
+
+```bash
+npm run build
+```
+
+### functions
+
+Build Lambda functions:
+
+```bash
+npm run build:functions
+```
+
+### preview
+
+Build production website including draft and future content:
+
+```bash
+npm run build:preview
+```
diff --git a/content/en/docs/prologue/introduction.md b/content/en/docs/prologue/introduction.md
new file mode 100644
index 00000000..2c0374c0
--- /dev/null
+++ b/content/en/docs/prologue/introduction.md
@@ -0,0 +1,58 @@
+---
+title: "Introduction"
+description: "Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize."
+lead: "Doks is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize."
+date: 2020-10-06T08:48:57+00:00
+lastmod: 2020-10-06T08:48:57+00:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "prologue"
+weight: 100
+toc: true
+---
+
+## Get started
+
+Some Text
+
+### Tutorial
+
+{{< alert icon="đ" text="The Tutorial is intended for novice to intermediate users." />}}
+
+Step-by-step instructions on how to start a new Doks project. [Tutorial â](https://getdoks.org/tutorial/introduction/)
+
+### Quick Start
+
+{{< alert icon="đ" text="The Quick Start is intended for intermediate to advanced users." />}}
+
+One page summary of how to start a new Doks project. [Quick Start â]({{< relref "quick-start" >}})
+
+## Go further
+
+Recipes, Reference Guides, Extensions, and Showcase.
+
+### Recipes
+
+Get instructions on how to accomplish common tasks with Doks. [Recipes â](https://getdoks.org/docs/recipes/project-configuration/)
+
+### Reference Guides
+
+Learn how to customize Doks to fully make it your own. [Reference Guides â](https://getdoks.org/docs/reference-guides/security/)
+
+### Extensions
+
+Get instructions on how to add even more to Doks. [Extensions â](https://getdoks.org/docs/extensions/breadcrumb-navigation/)
+
+### Showcase
+
+See what others have build with Doks. [Showcase â](https://getdoks.org/showcase/electric-blocks/)
+
+## Contributing
+
+Find out how to contribute to Doks. [Contributing â](https://getdoks.org/docs/contributing/how-to-contribute/)
+
+## Help
+
+Get help on Doks. [Help â]({{< relref "how-to-update" >}})
diff --git a/content/en/docs/prologue/quick-start.md b/content/en/docs/prologue/quick-start.md
new file mode 100644
index 00000000..9282d3ee
--- /dev/null
+++ b/content/en/docs/prologue/quick-start.md
@@ -0,0 +1,69 @@
+---
+title: "Quick Start"
+description: "One page summary of how to start a new Doks project."
+lead: "One page summary of how to start a new Doks project."
+date: 2020-11-16T13:59:39+01:00
+lastmod: 2020-11-16T13:59:39+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "prologue"
+weight: 110
+toc: true
+---
+
+## Requirements
+
+Doks uses npm to centralize dependency management, making it [easy to update]({{< relref "how-to-update" >}}) resources, build tooling, plugins, and build scripts:
+
+- Download and install [Node.js](https://nodejs.org/) (it includes npm) for your platform.
+
+## Start a new Doks project
+
+Create a new site, change directories, install dependencies, and start development server.
+
+### Create a new site
+
+Doks is available as a child theme, and a starter theme:
+
+- Use the Doks child theme, if you do __not__ plan to customize a lot, and/or need future Doks updates.
+- Use the Doks starter theme, if you plan to customize a lot, and/or do __not__ need future Doks updates.
+
+Not quite sure? Use the Doks child theme.
+
+#### Doks child theme
+
+```bash
+git clone https://github.com/h-enk/doks-child-theme.git my-doks-site
+```
+
+#### Doks starter theme
+
+```bash
+git clone https://github.com/h-enk/doks.git my-doks-site
+```
+
+### Change directories
+
+```bash
+cd my-doks-site
+```
+
+### Install dependencies
+
+```bash
+npm install
+```
+
+### Start development server
+
+```bash
+npm run start
+```
+
+Doks will start the Hugo development webserver accessible by default at `http://localhost:1313`. Saved changes will live reload in the browser.
+
+## Other commands
+
+Doks comes with commands for common tasks. [Commands â]({{< relref "commands" >}})
diff --git a/content/en/dotnet-microservices-boilerplate/_index.md b/content/en/dotnet-microservices-boilerplate/_index.md
new file mode 100644
index 00000000..6fb2b86e
--- /dev/null
+++ b/content/en/dotnet-microservices-boilerplate/_index.md
@@ -0,0 +1,10 @@
+---
+title : ".NET Microservices Boilerplate"
+description: "Essential Documentation for the .NET Microservices Boilerplate project."
+lead: ""
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-23T01:58:00+05:30
+draft: false
+images: []
+---
+Soon!
diff --git a/content/en/dotnet-microservices-boilerplate/general/overview.md b/content/en/dotnet-microservices-boilerplate/general/overview.md
new file mode 100644
index 00000000..ef259764
--- /dev/null
+++ b/content/en/dotnet-microservices-boilerplate/general/overview.md
@@ -0,0 +1,22 @@
+---
+title: "Overview"
+description: ".NET Microservices Boilerplate Template built with .NET 7.0. Incorporates the most essential Packages your projects will ever need. Follows Clean Architecture Principles."
+lead: ".NET Microservices Boilerplate Template built with .NET 7.0. Incorporates the most essential Packages your projects will ever need. Follows Clean Architecture Principles."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-26T08:03:38+05:30
+draft: false
+images: []
+menu:
+ dotnet-microservices-boilerplate:
+ identifier: "general-overview"
+ name: "Overview"
+ parent: "general"
+weight: 1
+toc: true
+---
+
+## What's fullstackhero's .NET Microservices Boilerplate?
+
+Github Repository URI : [fullstackhero/dotnet-microservices-boilerplate](https://github.com/fullstackhero/dotnet-microservices-boilerplate)
+
+`Star the above repository and support me!`
diff --git a/content/en/dotnet-webapi-boilerplate/_index.md b/content/en/dotnet-webapi-boilerplate/_index.md
new file mode 100644
index 00000000..549e206e
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/_index.md
@@ -0,0 +1,10 @@
+---
+title : ".NET Web API Boilerplate"
+description: "Essential Documentation for the .NET Web API Boilerplate project."
+lead: ""
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-23T01:58:00+05:30
+draft: false
+images: []
+---
+{{< img src="fullstackhero-dotnet-webapi-banner.png" >}}
diff --git a/content/en/dotnet-webapi-boilerplate/fullstackhero-dotnet-webapi-banner.png b/content/en/dotnet-webapi-boilerplate/fullstackhero-dotnet-webapi-banner.png
new file mode 100644
index 00000000..36041a79
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/fullstackhero-dotnet-webapi-banner.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/_index.md b/content/en/dotnet-webapi-boilerplate/fundamentals/_index.md
new file mode 100644
index 00000000..5cdc6739
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/_index.md
@@ -0,0 +1,9 @@
+---
+title : "Fundamentals"
+description: "fullstackhero's Web API Fundamental Features Explained."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-23T02:00:55+05:30
+lead: ""
+draft: false
+images: []
+---
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/application-startup.md b/content/en/dotnet-webapi-boilerplate/fundamentals/application-startup.md
new file mode 100644
index 00000000..a1e9b7af
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/application-startup.md
@@ -0,0 +1,18 @@
+---
+title: "Application Startup"
+description: "Understanding application-startup in fullstackhero's Web API."
+lead: "Understanding Logging in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "application-startup"
+ name: "Application Startup"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/caching.md b/content/en/dotnet-webapi-boilerplate/fundamentals/caching.md
new file mode 100644
index 00000000..1928b26b
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/caching.md
@@ -0,0 +1,18 @@
+---
+title: "Caching"
+description: "Understanding Caching in fullstackhero's Web API."
+lead: "Understanding Caching in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "caching"
+ name: "Caching"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/configurations.md b/content/en/dotnet-webapi-boilerplate/fundamentals/configurations.md
new file mode 100644
index 00000000..556c9400
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/configurations.md
@@ -0,0 +1,182 @@
+---
+title: "Configurations"
+description: "Understanding Configurations in fullstackhero's Web API."
+lead: "Understanding Configurations in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "configurations"
+ name: "Configurations"
+ parent: "fundamentals"
+weight: 8
+toc: true
+---
+Within the Host boot project there is a folder called "Configurations". where there are all the configuration files, one for each area.
+
+## General Structure
+
+```bash
+âââ Host.csproj
+â âââ Configurations
+â | âââ cache.json
+â | âââ cors.json
+â | âââ database.json
+â | âââ hangfire.json
+â | âââ logger.json
+â | âââ mail.json
+â | âââ middleware.json
+â | âââ openapi.json
+â | âââ security.json
+â | âââ securityheaders.json
+â | âââ signalr.json
+| âââ appsettings.json
+|
+```
+
+> The classic appsettings.json configuration file is still available to manage custom parameters.
+
+The **`Startup` class** inside the folder is responsible for loading all the configuration files described above.
+
+## Cache
+
+By default, the application uses in-memory cache. To enable Distributed caching with Redis, set the `UseDistributedCache` and `PreferRedis` to true and give a valid redis url!
+
+```json
+{
+ "CacheSettings": {
+ "UseDistributedCache": false,
+ "PreferRedis": false,
+ "RedisURL": "localhost:6379"
+ }
+}
+```
+## CORS
+
+Depends on the client consuming the WebAPI.
+
+```json
+{
+ "CorsSettings": {
+ "Angular": "http://localhost:4200",
+ "Blazor": "https://localhost:5002;https://www.mydomain.my",
+ "React": "http://localhost:3000"
+ }
+}
+```
+## Database
+
+By default, the dbprovider is set to postgresql. You will also have to change the connection string that is defined in hangfire.json.
+
+```json
+{
+ "DatabaseSettings": {
+ "DBProvider": "postgresql",
+ "ConnectionString": "Host=localhost;Port=5432;Database=fshDb;Username=postgres;Password=admin;Include Error Detail=true"
+ }
+}
+```
+
+For details about other database providers, [refer this page](http://localhost:1313/dotnet-webapi-boilerplate/general/getting-started/#setting-up-the-connection-string)
+
+## Localization
+
+The outgoing responses can be localized using this. The client would have to pass the following header to receive localized responses.
+
+```
+Accept-Language:
+```
+
+Here, the locale-key can be anything like fr,de, it and so on. The default locale is set to english.
+
+```json
+{
+ "LocalizationSettings": {
+ "EnableLocalization": true,
+ "ResourcesPath": "Localization",
+ "SupportedCultures": [
+ "en-US",
+ "en",
+ "fr",
+ "fr-FR",
+ "de",
+ "de-DE",
+ "it",
+ "it-IT",
+ "pt",
+ "nl",
+ "nl-NL"
+ ],
+ "DefaultRequestCulture": "en",
+ "FallbackToParent": true
+ }
+}
+```
+
+## Logger
+
+FSH internally uses Serilog for logging. Here is the configuration for logger.
+
+```json
+{
+ "LoggerSettings": {
+ "AppName": "FSH.WebApi",
+ "ElasticSearchUrl": "http://localhost:9200",
+ "WriteToFile": true,
+ "StructuredConsoleLogging": false
+ }
+}
+```
+
+ElasticSearchUrl -> If this is empty, serilog will ignore writing to elastic cache.
+WriteToFile -> JSON structured logging to file. These log files can be found under the ./src/Host/Logs folder.
+StructuredConsoleLogging -> This can be useful when deploying the application to AWS ECS, for better Cloudwatch logging.
+
+## Mail
+
+We use Ethereal, a fake SMTP Service for mocking email transactions. Don't worry, the included credentials are valid, but you can create your own as well. Check [ethereal](https://ethereal.email/)
+
+```json
+{
+ "MailSettings": {
+ "DisplayName": "Mukesh Murugan",
+ "From": "mukesh@fullstackhero.net",
+ "Host": "smtp.ethereal.email",
+ "Password": "AdEqEKB4QwWX9Xey82",
+ "Port": 587,
+ "UserName": "nestor91@ethereal.email"
+ }
+}
+```
+
+### Security
+
+```json
+{
+ "SecuritySettings": {
+ "Provider": "Jwt",
+ "RequireConfirmedAccount":true,
+ "JwtSettings": {
+ "key": "S0M3RAN0MS3CR3T!1!MAG1C!1!",
+ "tokenExpirationInMinutes": 60,
+ "refreshTokenExpirationInDays": 7
+ },
+ "AzureAd": {
+ "Instance": "https://login.microsoftonline.com/",
+ "Domain": ".onmicrosoft.com",
+ "TenantId": "organizations",
+ "ClientId": "",
+ "Scopes": "access_as_user",
+ "RootIssuer": "https://sts.windows.net//"
+ },
+ "Swagger": {
+ "AuthorizationUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize",
+ "TokenUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/token",
+ "ApiScope": "api:///access_as_user",
+ "OpenIdClientId": ""
+ }
+ }
+}
+```
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/cors.md b/content/en/dotnet-webapi-boilerplate/fundamentals/cors.md
new file mode 100644
index 00000000..b8afc2f2
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/cors.md
@@ -0,0 +1,32 @@
+---
+title: "CORS"
+description: "Understanding CORS in fullstackhero's Web API."
+lead: "Understanding CORS in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "cors"
+ name: "CORS"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+CORS is an mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own.
+
+FullStackHero Web API has support for providing to several clients, all of the configurations related this feature can be found under `src/Host/Configurations/cors.json`.
+
+We present two scenarios that demonstrate how Cross-Origin requests by clients can be served:
+```
+{
+ "CorsSettings": {
+ "Angular": "http://localhost:4200",
+ "Blazor": "https://localhost:5002;https://www.mydomain.my"
+ }
+}
+```
+
+
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/exception-handling.md b/content/en/dotnet-webapi-boilerplate/fundamentals/exception-handling.md
new file mode 100644
index 00000000..2e459752
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/exception-handling.md
@@ -0,0 +1,18 @@
+---
+title: "Exception Handling"
+description: "Understanding Exception Handling in fullstackhero's Web API."
+lead: "Understanding Exception Handling in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "exception-handling"
+ name: "Exception Handling"
+ parent: "fundamentals"
+weight: 9
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/hangfire.md b/content/en/dotnet-webapi-boilerplate/fundamentals/hangfire.md
new file mode 100644
index 00000000..a08818dc
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/hangfire.md
@@ -0,0 +1,18 @@
+---
+title: "Hangfire"
+description: "Understanding Hangfire in fullstackhero's Web API."
+lead: "Understanding Hangfire in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "hangfire"
+ name: "Hangfire"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/localization.md b/content/en/dotnet-webapi-boilerplate/fundamentals/localization.md
new file mode 100644
index 00000000..06c5ac7e
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/localization.md
@@ -0,0 +1,18 @@
+---
+title: "Localization"
+description: "Understanding Localization in fullstackhero's Web API."
+lead: "Understanding Localization in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "localization"
+ name: "Localization"
+ parent: "fundamentals"
+weight: 10
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/logging/console-logging.jpg b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/console-logging.jpg
new file mode 100644
index 00000000..3e0a84fa
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/console-logging.jpg differ
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/logging/docker-elk.jpg b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/docker-elk.jpg
new file mode 100644
index 00000000..5cbd5b52
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/docker-elk.jpg differ
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/logging/file-logging.jpg b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/file-logging.jpg
new file mode 100644
index 00000000..7c6fb75d
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/file-logging.jpg differ
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/logging/index.md b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/index.md
new file mode 100644
index 00000000..df1e4378
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/index.md
@@ -0,0 +1,109 @@
+---
+title: "Logging"
+description: "Understanding Logging in fullstackhero's Web API."
+lead: "Understanding Logging in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-12-12T11:21:11+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "logging"
+ name: "Logging"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+FullStackHero Web API has out of the box support for logging to several destinations. Thanks to the usage of Serilog! All of the configurations related to Logging can be found under `src/Host/Configurations/logger.json`.
+
+## Console
+
+Console Logging is enabled by Default. This is done directly in the C# code and not in the JSON Configurations. You can find the code snippet at the Host's Program.cs. Package used - `Serilog.Sinks.Console`
+
+```
+builder.Host.UseSerilog((_, config) =>
+{
+ config.WriteTo.Console()
+ .ReadFrom.Configuration(builder.Configuration);
+});
+```
+
+Here is how the logs show up on Console via Serilog.
+
+{{< img src="console-logging.jpg" >}}
+
+## File
+
+Structured logging is the best part of using Serilog! It is possible to use JSON formatters to evenly log messages and warning to files in the local directory. Package used - `Serilog.Sinks.File`
+
+```
+"Name": "File",
+"Args": {
+ "path": "Logs/logs.json",
+ "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog",
+ "rollingInterval": "Day",
+ "restrictedToMinimumLevel": "Information",
+ "retainedFileCountLimit": 5
+}
+```
+
+The above configurations ensures that the logs are structured and has a new filename every day. Since we do not want to use of a lot of memory to keep these logs, it's configured to keep the logs of the last 5 days only. Feel free to modify this. Also this only logs the messages that has a level of Information or above.
+
+{{< img src="file-logging.jpg" >}}
+
+## SEQ
+
+Having a dashboard to analyze the logs and warning are always good to have. SEQ is one option for that. It collects application logs, filters it as you need, along with several other integrations.
+
+Package used - `Serilog.Sinks.Seq`
+
+Make sure you have SEQ installed and running on your machine / environment. SEQ is free for Individual use. Once setup, point to the SEQ Instance. It usually runs over the `5341` port.
+
+```
+"Name": "Seq",
+"Args": {
+ "serverUrl": "http://localhost:5341"
+}
+```
+
+
+{{< img src="seq-logging.jpg" >}}
+
+## Elastic Search
+
+Now, the interesting part! Elastic Search with Kibana for Logging. You will need instances of Kibana and ElasticSearch running. To make things simpler, I have included a docker-compose `deployments\elk\docker-compose.elk.yml` which has references to both Kibana and ElasticSearch Images of version `7.16.0`.
+
+Ensure that you have Docker installed on your machine along with the Docker Extensions for Visual Code (or your favorite IDE). From VS Code, you can simply right click `\deployments\elk\docker-compose.elk.yml` and click on Docker-Up. This would spin up the Kibana and ES instances for you in no time.
+
+{{< img src="docker-elk.jpg" >}}
+
+By default,
+- Kibana runs on port 5601 - http://localhost:5601
+- Elastic Search runs on port 9200 - http://localhost:9200
+
+Package used - `Serilog.Sinks.Elasticsearch`
+
+```
+"Name": "Elasticsearch",
+"Args": {
+ "nodeUris": "http://localhost:9200;",
+ "indexFormat": "DN.WebApi-logs-{0:yyyy.MM}",
+ "numberOfShards": 2,
+ "numberOfReplicas": 1,
+ "restrictedToMinimumLevel": "Information"
+}
+```
+
+You can see that we are pointing to port 9200 from our configuration. This instructs Serilog to write the logs to ElasticSearch DB.
+
+To view the logs on Dashboard, navigate to http://localhost:5601
+
+Firstly, navigate to Kibana Spaces - http://localhost:5601/app/management/kibana/spaces
+
+From the sidebar, select Index Patterns and create a new one.
+
+In the Name field - put in `dn.webapi-logs*` or whatever you have set in your Serilog Configuration under `indexFormat`. Select the Timestamp field as `@timestamp`. That's it.
+
+Now, go to http://localhost:5601/app/discover
+
+{{< img src="kibana.jpg" >}}
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/logging/kibana.jpg b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/kibana.jpg
new file mode 100644
index 00000000..bb2a2120
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/kibana.jpg differ
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/logging/seq-logging.jpg b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/seq-logging.jpg
new file mode 100644
index 00000000..5264db04
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/fundamentals/logging/seq-logging.jpg differ
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/mail-service.md b/content/en/dotnet-webapi-boilerplate/fundamentals/mail-service.md
new file mode 100644
index 00000000..2db770a3
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/mail-service.md
@@ -0,0 +1,18 @@
+---
+title: "Mail Service"
+description: "Understanding Mail Service in fullstackhero's Web API."
+lead: "Understanding Mail Service in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "mail-service"
+ name: "Mail Service"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/middlewares.md b/content/en/dotnet-webapi-boilerplate/fundamentals/middlewares.md
new file mode 100644
index 00000000..f756c615
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/middlewares.md
@@ -0,0 +1,18 @@
+---
+title: "Middlewares"
+description: "Understanding Middlewares in fullstackhero's Web API."
+lead: "Understanding Middlewares in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "middlewares"
+ name: "Middlewares"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/multitenancy.md b/content/en/dotnet-webapi-boilerplate/fundamentals/multitenancy.md
new file mode 100644
index 00000000..b5fc1421
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/multitenancy.md
@@ -0,0 +1,18 @@
+---
+title: "Multitenancy"
+description: "Understanding Multitenancy in fullstackhero's Web API."
+lead: "Understanding Multitenancy in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "multitenancy"
+ name: "Multitenancy"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/security.md b/content/en/dotnet-webapi-boilerplate/fundamentals/security.md
new file mode 100644
index 00000000..352812ef
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/security.md
@@ -0,0 +1,18 @@
+---
+title: "Security"
+description: "Understanding Security in fullstackhero's Web API."
+lead: "Understanding Security in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "security"
+ name: "Security"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/signalr.md b/content/en/dotnet-webapi-boilerplate/fundamentals/signalr.md
new file mode 100644
index 00000000..5fbf9c84
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/signalr.md
@@ -0,0 +1,18 @@
+---
+title: "SignalR"
+description: "Understanding SignalR in fullstackhero's Web API."
+lead: "Understanding SignalR in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "signalr"
+ name: "SignalR"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/fundamentals/swagger.md b/content/en/dotnet-webapi-boilerplate/fundamentals/swagger.md
new file mode 100644
index 00000000..75d39cbd
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/fundamentals/swagger.md
@@ -0,0 +1,18 @@
+---
+title: "Swagger"
+description: "Understanding Swagger in fullstackhero's Web API."
+lead: "Understanding Swagger in fullstackhero's Web API."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "swagger"
+ name: "Swagger"
+ parent: "fundamentals"
+weight: 11
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/dotnet-webapi-boilerplate/general/_index.md b/content/en/dotnet-webapi-boilerplate/general/_index.md
similarity index 100%
rename from content/dotnet-webapi-boilerplate/general/_index.md
rename to content/en/dotnet-webapi-boilerplate/general/_index.md
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/create-brand.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/create-brand.png
new file mode 100644
index 00000000..00a74f64
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/create-brand.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/get-token.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/get-token.png
new file mode 100644
index 00000000..6080dce9
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/get-token.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/index.md b/content/en/dotnet-webapi-boilerplate/general/api-testing/index.md
new file mode 100644
index 00000000..58a82862
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/general/api-testing/index.md
@@ -0,0 +1,187 @@
+---
+title: "API Testing"
+description: "Testing fullstackhero's Web API"
+lead: "Testing fullstackhero's Web API"
+date: 2021-08-30T00:59:34+05:30
+lastmod: 2023-04-08T15:31:51+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "api-testing"
+ name: "API Testing"
+ parent: "general"
+weight: 4
+toc: true
+---
+fullstackhero's Web API can be tested via `ThunderClient`, Postman as well as the built in Swagger.
+
+Once the WebAPI is up and running (by default of port 5001 of localhost), here are the ways to test the functionalilty easily.
+
+## Swagger
+
+Navigate to https://localhost:5001/swagger/index.html
+
+{{< img src="swagger.png" >}}
+
+Here you can see all the available endpoints. Since all of the endpoints except the login and registration endpoints are secured, you would need a Authentication Token to access these services.
+
+Let's see how to generate a token via Swagger.
+
+You would have to the /token endpoint for this.
+
+{{< img src="swagger-request.png" >}}
+
+As mentioned earlier, the default credentials are
+
+```
+{
+ "email":"admin@root.com",
+ "password":"123Pa$$word!"
+}
+```
+
+and the default tenant is `root`. Once you send a POST request to the /token endpoint with these parameters, the API would return a valid JWT token which can be used to authenticate your further requests to various other endpoints of the API.
+
+Below is the response sent by the API.
+
+{{< img src="swagger-response.png" >}}
+
+Once you have the token, simply copy it , click on the Authoize button (found at the top of the Swagger UI) and paste the token as shown below. This makes sure that the token is sent alongwith all the requests as an Auth Header.
+
+{{< img src="swagger-header.png" >}}
+
+
+## ThunderClient
+
+This is my personal favorite way to test any .NET API that I work with. This will be very helpful to you too if you use Visual Code for .NET development. Make sure that you have the ThunderClient VsCode Extension installed.
+
+I have included the files required for you to test the FSH WebAPI in the **./thunder-tests** folder at the root of the solution.
+
+{{< img src="tc-tests.png" >}}
+
+### Get Authentication Token
+
+As mentioned earlier, to the /api/tokens endpoint we POST a request with the following body and add a `tenantId = root` key to the request header. This should return a valid token from the webapi.
+
+```
+{
+ "email": "admin@root.com",
+ "password": "123Pa$$word!"
+}
+```
+
+{{< img src="get-token.png" >}}
+
+### Environment Variables
+
+{{< img src="tc-env.png" >}}
+
+## Postman
+
+Postman is also supported!
+
+Now that our application is up and running, let's fire up POSTMAN and run some basic requests. You can find the updated Postman collection under the /postman folder of your solution or [here](https://github.com/fullstackhero/dotnet-webapi-boilerplate/blob/main/postman/dotnet.webapi.boilerplate.postman_collection.json). Import this postman collection on to your local Postman.
+
+Note that I have set up some default collection variables to make things easier.
+
+{{< img src="postman-collection.png" >}}
+
+In case your application happens to start on a different Port, you would have to change the `url` variable on this collection and save it.
+
+### Generating Access Token
+
+Let's start by generating a token for the `root admin` user! Navigate to the Identity/get-token request and simply run it. If everything goes as expected, you would be seeing a valid token as your response.
+
+Note that here, we are passing the tenant header as `root`
+
+{{< img src="token-response.png" >}}
+
+Whenever a valid token is generated via Postman, it is stored as a variable of the collection and is used by default for all the subsequent requests via Postman until the token expires. By default, tokens have a lifetime of 60 minutes which is configurable via the `Host/Configurations/security.json` under `SecuritySettings / JwtSettings / tokenExpirationInMinutes`.
+
+### Search Brands
+
+ You can test that the token is valid by sending the 'search-brands' request.
+
+Your request body would look somewhat like this:
+
+```powershell
+{
+ "keyword": "",
+ "pageNumber": 0,
+ "pageSize": 10,
+ "orderBy": [
+ "id"
+ ]
+}
+```
+So, by default as soon as your application in run for the first time, a couple of Brands are seeded into the database for demo purposes.
+
+The *keyword* parameter in the above request denotes the keyword you want to search for in the brands table. Let's leave it empty for now and let all the other parameters stay unchanged.
+
+Presuming that you have a valid token you'll see:
+
+{{< img src="search-brand.png" >}}
+
+```powershell
+{
+ "data": [
+ {
+ "id": "ca6247e8-3d7a-4c04-8d64-08d9f76d2c72",
+ "name": "Razor",
+ "description": "Sample Data"
+ },
+ {
+ "id": "c5b447c6-a518-4268-8d65-08d9f76d2c72",
+ "name": "Samsung",
+ "description": "Sample Data"
+ },
+ {
+ "id": "bb49e53d-9149-41d3-8d66-08d9f76d2c72",
+ "name": "MSI",
+ "description": "Sample Data"
+ },
+ {
+ "id": "3214bf2d-9a0d-454e-8d67-08d9f76d2c72",
+ "name": "Huawei",
+ "description": "Sample Data"
+ }
+ ],
+ "currentPage": 1,
+ "totalPages": 1,
+ "totalCount": 4,
+ "pageSize": 10,
+ "hasPreviousPage": false,
+ "hasNextPage": false
+}
+```
+### Create a new Brand
+
+Let's create a new Brand. Open up Catalog/Brands/create-brand request via Postman and POST the following body.
+
+```
+{
+ "name":"Bra1nod #29",
+ "description":"Something Cool!"
+}
+```
+Once you send your request and things work as expected, the API would send back a 200 Status Code along with your new Brand's ID as shown below.
+
+{{< img src="create-brand.png" >}}
+
+Resend the **'search-brands'** request to see your new brand listed in the response!
+
+### Create a new Product
+
+Next let's add a product. Run the **'create-product'** request at this point and you'll see a failure message:
+
+```powershell
+{
+ "source": "DN.WebApi.Application",
+ "exception": "brand.notfound [en-US]",
+ "errorCode": 404,
+ "succeeded": false
+}
+```
+
+What went wrong?? Click the '**Body**' tab and look at the value for the _brandId_. That field needs to match the _ID_ value of the **Brands** table. When I created the Postman collection I had to use the values that existed while I was building the project from my workstation. If you revisit the '**search-brands**' request and look at the results you'll see a value for '_id_'. Copy that value - return to the `**create-product**' request - replace the id value with what you'd copied and re-send the command. It should report success now.
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/postman-collection.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/postman-collection.png
new file mode 100644
index 00000000..649c0a11
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/postman-collection.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/search-brand.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/search-brand.png
new file mode 100644
index 00000000..10c2eb89
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/search-brand.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-header.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-header.png
new file mode 100644
index 00000000..2d1b8fd5
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-header.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-request.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-request.png
new file mode 100644
index 00000000..f4d29ec5
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-request.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-response.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-response.png
new file mode 100644
index 00000000..630e4927
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger-response.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger.png
new file mode 100644
index 00000000..90c89821
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/swagger.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/tc-env.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/tc-env.png
new file mode 100644
index 00000000..09c892e5
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/tc-env.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/tc-tests.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/tc-tests.png
new file mode 100644
index 00000000..18e39408
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/tc-tests.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/api-testing/token-response.png b/content/en/dotnet-webapi-boilerplate/general/api-testing/token-response.png
new file mode 100644
index 00000000..b676e443
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/api-testing/token-response.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/changelogs.md b/content/en/dotnet-webapi-boilerplate/general/changelogs.md
new file mode 100644
index 00000000..d6e7e53f
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/general/changelogs.md
@@ -0,0 +1,109 @@
+---
+title: "Changelogs"
+description: "Track fullstackhero's Web API Changelogs."
+lead: "Track fullstackhero's Web API Changelogs."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-10-28T10:07:45+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "changelogs"
+ name: "Changelogs"
+ parent: "general"
+weight: 7
+toc: true
+---
+
+## 1.0.0
+
+Release Tag [1.0.0](https://github.com/fullstackhero/dotnet-webapi-boilerplate/tree/1.0.0) released on `2023-04-08`
+
+- .NET 7 Upgrade
+- FSH CLI Support
+- Bug Fixes
+- Code Cleanups
+- Package Upgrades
+- Makefile
+- Built-In Docker Support
+- Docker-Compose files
+- Terraform for AWS ECS Deployment
+- Switched Default Database Provider as PostgreSQL
+
+## 0.0.6-rc
+
+Release Tag [0.0.6-rc](https://github.com/fullstackhero/dotnet-webapi-boilerplate/tree/0.0.6-rc) released on `2022-02-26`
+
+- AD Authentication Support
+- Oracle DB Provider for EFCore support
+- Code Refactors
+- Added ElasticSearch + Kibana for Logging
+- Added Docker Compose for ElasticSearch + Kibana Container
+- Integrated Finbucke Multitenant packages
+- Solution Restructure
+- Added Scripts for Generating Migrations
+- Introduced CQRS Pattern with MediatR
+- Better Configuration Files
+- Added .rest file for API Testing
+- Updated Postman Collection
+- Code Cleanup
+- Updated all Packages
+- Serilog Startup fix
+- Export to Excel Support
+- Specification Pattern using Ardalis packages
+- OpenAPI Client Generation
+
+## 0.0.5-rc
+
+Release Tag [0.0.5-rc](https://github.com/fullstackhero/dotnet-webapi-boilerplate/tree/0.0.5-rc) released on `2021-11-28`
+
+- Fixed Password Reset / Forgot
+- Fixed Omnisharp Warnings / Code Cleanup
+- Fixed Repository Method
+- Log Hangfire to Serilog - Thanks [frankyjquintero](https://github.com/frankyjquintero)
+- Extras Hangfire extensions - Thanks [frankyjquintero](https://github.com/frankyjquintero)
+- Hangfire implementation examples - Thanks [frankyjquintero](https://github.com/frankyjquintero)
+- Separate JSON files for each Settings - Thanks [unchase](https://github.com/unchase)
+- Added Events and Handlers via MediatR - Thanks [frankyjquintero](https://github.com/frankyjquintero)
+- Moved to Tenancy Middleware - Thanks [frankyjquintero](https://github.com/frankyjquintero) & [fretje](https://github.com/fretje)
+- Solution Cleanup - rulesets & analyzer - Thanks [fretje](https://github.com/fretje)
+- Added More Functions for RepositoryAsync - Thanks [ghaithprosoft](https://github.com/ghaithprosoft)
+- Entity Database Seeding Simplified
+- File-Scoped namespaces and implicit usings
+- Better Folder Structure / Modular
+
+## 0.0.4-rc
+
+Release Tag [0.0.4-rc](https://github.com/fullstackhero/dotnet-webapi-boilerplate/tree/0.0.4-rc) released on `2021-11-06`
+
+- Bug fix in Repository / Update method.
+- Endpoint changes for Update / Delete Methods. (Postman Collection Updated)
+- Fixed bug in Request Logging Middleware.
+- Disabled Request Logger by default to save log space.
+- Adds default Role (Basic) to any new registered user.
+- Basic User has default View / Search Permissions
+- Code Cleanups
+- Templated Emails for User Registrations
+
+## 0.0.3-rc
+
+Release Tag [0.0.3-rc](https://github.com/fullstackhero/dotnet-webapi-boilerplate/tree/0.0.3-rc) released on `2021-10-23`
+
+- Security Patches
+
+## 0.0.2-rc
+
+- Migration Refresh
+- Security Patches
+- Image Upload Fix
+- Option to Disable Swagger
+- Cleaner Code
+- Activate / Deactivate Tenants
+- Upgrade Tenant Subscription
+- Advanced Search
+
+## 0.0.1-rc
+
+Release Tag [0.0.1-rc](https://github.com/fullstackhero/dotnet-webapi-boilerplate/tree/0.0.1-rc) released on `2021-09-29`
+
+- Initial release
diff --git a/content/dotnet-webapi-boilerplate/general/development-environment.md b/content/en/dotnet-webapi-boilerplate/general/development-environment.md
similarity index 76%
rename from content/dotnet-webapi-boilerplate/general/development-environment.md
rename to content/en/dotnet-webapi-boilerplate/general/development-environment.md
index 9db8c749..4ac60bc6 100644
--- a/content/dotnet-webapi-boilerplate/general/development-environment.md
+++ b/content/en/dotnet-webapi-boilerplate/general/development-environment.md
@@ -3,11 +3,11 @@ title: "Development Environment"
description: "Setting up the Development Environment for the .NET WebApi Boilerplate"
lead: "Let's get started with setting up the Development Environment for .NET WebApi Boilerplate Development!"
date: 2021-08-30T00:59:34+05:30
-lastmod: 2021-10-15T08:54:03+05:30
+lastmod: 2023-04-08T13:24:47+05:30
draft: false
images: []
menu:
- webapi:
+ dotnet-webapi-boilerplate:
identifier: "general-development-environment"
name: "Development Environment"
parent: "general"
@@ -18,11 +18,11 @@ fullstackhero's **.NET WebApi Boilerplate** Project Development needs you to hav
## .NET SDK
-As mentioned earlier, this project is built with the latest available .NET SDK, which is .NET 6.0. Since the SDK is currently at preview, the project will be released by Mid-November as soon as Microsoft launches .NET 6.0 LTS SDK. But that doesn't stop you from testing out the application!
+As mentioned earlier, this project is built with the latest available .NET SDK, which is .NET 7.0.
-Ensure that you have the latest version of the SDK available - [Download from Microsoft](https://dotnet.microsoft.com/download/dotnet/6.0)
+Ensure that you have the latest version of the SDK available - [Download from Microsoft](https://dotnet.microsoft.com/download/dotnet/7.0)
-{{< alert icon="đĄ" text="Note : At the time of compiling this documentation, the latest version available was dotnet-sdk-6.0.100-rc.2.21505.57" />}}
+{{< alert icon="đĄ" text="Note : At the time of compiling this documentation, the latest version available was SDK 7.0.200" />}}
## IDE
@@ -45,10 +45,14 @@ Incase you intend to use Visual Studio Code for development, here are a bunch of
## Database Servers
-fullstackhero's .NET WebApi Boilerplate gives you the freedom to choose between the following 3 popular Database Providers. Please note that with the current architecture of the API Project, it would rather be easy to add in support for more DB Providers with minimal change of code. But as of now, here are the 3 Supported Database Providers! By default, MSSQL is chosen as the Database Provider.
+fullstackhero's .NET WebApi Boilerplate gives you the freedom to choose between the following 4 popular Database Providers. Please note that with the current architecture of the API Project, it would rather be easy to add in support for more DB Providers with minimal change of code. But as of now, here are the 4 Supported Database Providers! By default, `PostgreSQL` is chosen as the Database Provider.
{{< alert text="Make sure that you have at least one of these servers installed, along with a Database Management tool like Azure Data Studio / PostgreSQL pgAdmin / MySQL Workbench " />}}
+### PostgreSQL
+
+Probably the best Open Source Database Server with lots of Enterprise level features.
+- Download postgresql Installer - [Get from postgresql.org](https://www.postgresql.org/download/)
### MSSQL
@@ -58,25 +62,32 @@ There are high chances that you already have this installed on your machine. Thi
- Download SQL Server Management Studio (SSMS) - [Get from Microsoft](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15)
- Download Azure Data Studio to browse your MSSQL Databases - [Get from Microsoft](https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio)
-
### MySQL
- Check out the Community versions of this Server - [Get from mysql](https://dev.mysql.com/downloads/mysql/)
- Download MySQL Workbench - [Get from mysql](https://dev.mysql.com/downloads/workbench/)
-### PostgreSQL
+### Oracle
-Probably the best Open Source Database Server with lots of Enterprise level features.
-- Download postgresql Installer - [Get from postgresql.org](https://www.postgresql.org/download/)
+- [Download](https://www.oracle.com/in/database/technologies/oracle19c-windows-downloads.html)
+
+## API Testing Tools
-## API Testing
+### POSTMAN
When it comes to API Testing, Postman is the recommended tool. I have made sure to include a Postman Collection within the Repository under **/postman** folder to make sure you can test out all the existing endpoints. Note that there will be a detailed guide on how to use the given Postman Collection.
- Download Postman - [Get from postman.com](https://www.postman.com/downloads/)
-## Community Tools
+### Thunderclient Extension
+
+This is my current personal favorite for testing APIs. It's lightweight when compared to Postman,and also let's you test without leaving the IDE.
+If you are using Visual Code, you would love this! Search for `Thunderclient` under extensions and get it installed.
+
+All the required files for testing the API with thunderclient and present under **/thunder-tests** folder at the root of the solution!
+
+## Docker (Optional)
-## Optionals
+Ensure that Docker Desktop is intalled on your machine.
-### Docker
+[Get from docker.com](https://www.docker.com/products/docker-desktop/)
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/folder-structure.png b/content/en/dotnet-webapi-boilerplate/general/getting-started/folder-structure.png
new file mode 100644
index 00000000..0ab0ee4a
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/getting-started/folder-structure.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/generate-solution-via-fsh-cli.png b/content/en/dotnet-webapi-boilerplate/general/getting-started/generate-solution-via-fsh-cli.png
new file mode 100644
index 00000000..fd955427
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/getting-started/generate-solution-via-fsh-cli.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/index.md b/content/en/dotnet-webapi-boilerplate/general/getting-started/index.md
new file mode 100644
index 00000000..cfc650a4
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/general/getting-started/index.md
@@ -0,0 +1,215 @@
+---
+title: "Getting Started đ"
+description: "Let's get started with the .NET WebApi Boilerplate!"
+lead: "Let's get started with the .NET WebApi Boilerplate!"
+date: 2021-08-30T00:59:34+05:30
+lastmod: 2023-04-08T15:32:05+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "general-getting-started"
+ name: "Getting Started đ"
+ parent: "general"
+weight: 3
+toc: true
+---
+
+
+
+
+Firstly, make sure that you have already setup your development environment that runs the prerequisite tools and SDKs. Refer [Development Environment](/dotnet-webapi-boilerplate/general/development-environment/) for details.
+
+This guide will take you right from strating up your own .NET Web API Project using `fullstackhero .NET WebAPI Boilerplate` package / repository to testing the API using the provided Postman/ThunderClient Collection!
+
+To get started with this Boilerplate, here are the available options.
+
+- Install using the `FSH CLI` tool. Use this for release versions of the Boilerplate only.
+- Fork the Repository. Use this if you want to always keep your version of the Boilerplate up-to date with the latest changes.
+
+> Make sure that your DEV enviroment is setup, [Read the Development Environment Guide](https://fullstackhero.net/dotnet-webapi-boilerplate/general/development-environment/)
+
+## FSH CLI Tool
+
+### Prerequisites
+
+Before creating your first fullstackhero solution, you should ensure that your local machine has:
+
+- **.NET 7** You can find the download [here](https://dotnet.microsoft.com/en-us/download/dotnet/7.0).
+- **NodeJS (16+)** You can find the download [here](https://nodejs.org/en/download).
+
+### Installation
+
+After you have installed .NET, you will need to install the `fsh` console tool.
+
+```bash
+dotnet tool install --global FSH.CLI
+fsh install
+```
+
+This install the FSH CLI tools and the associated Templates globally on your machine. You are now ready to create your first FSH project!
+
+Do note that, at the time of writing this documentation, the latest available version is **1.0.0** which is also one of the first stable versions of the package. It is highly likely that there is already a newer version available when you are reading this.
+
+> *To get the latest version of the package, visit [nuget.org](https://www.nuget.org/packages/FullStackHero.WebAPI.Boilerplate)*
+>
+> *FullStackHero.WebAPI.Boilerplate is now in release state. You can find the latest version on NuGet.org*
+
+To learn more about the FSH CLI tool, [read here](https://github.com/fullstackhero/dotnet-webapi-boilerplate/blob/main/fsh-cli/README.md)
+
+## Forking the Repository & Creating your New Solution!
+
+You would probably need to take this approach if you want to keep your source code upto date with the latest changes. To get started based on this repository, you need to get a copy locally.
+
+- Make a fork of fullstackhero's `dotnet-webapi-boilerplate` repository in your Github account.
+- Next, since you need to start your private personal project, create your new `dotnet-webapi-boilerplate` personal project by cloning the forked repository on your personal github. This could be done as simple as running `git clone https://github.com/{yourgithubuseraccount}/dotnet-webapi-boilerplate.git` locally on your development machine.
+- Setup an upstream remote on your personal project pointing to your forked repository using command `git remote add upstream https://github.com/{yourgithubuseraccount}/dotnet-webapi-boilerplate` and `git remote set-url --push upstream DISABLE`
+
+Now, whenever there is a new update on fullstackhero's `dotnet-webapi-boilerplate` repository, you could simply pull in the latest change on your private fork of the fullstackhero's `dotnet-webapi-boilerplate` repository and later merge these changes with you personal projects.
+
+For step by step instructions, [follow this](https://discord.com/channels/878181478972928011/892573122186838046/933513103688224838) and [this](https://gist.github.com/0xjac/85097472043b697ab57ba1b1c7530274).
+
+
+### Creating your First Solution
+
+> Note that this is not valid only if you have installed the fsh cli tool.
+
+Now that you have installed the template locally on your machine, let's see how you can start generating complete .NET WebAPI Solutions seamlessly.
+
+Simply navigate to a new directory (wherever you want to place your new solution at), and open up Command Prompt at the opened directory.
+
+Run the following command. Note that, in this demonstration I am naming my new solution as `FSH.Starter`.
+
+```powershell
+fsh api new FSH.Starter
+```
+
+{{< img src="generate-solution-via-fsh-cli.png" >}}
+
+Once that is done, your new solution is created for you. As simple as that!
+
+Here are the folders and files created for you.
+
+{{< img src="folder-structure.png" >}}
+
+### Alternatively..
+
+> Note that this is valid only if you have installed the NuGet package of this Boilerplate.
+
+When you installed the NuGet package, there is also an entry that has been created into your Visual Studio Template for fullstackhero's .NET WebAPI Boilerplate. If you find it easier to work with Visual Studio rather than CLI Commands to generate new solutions, you are free to do so.
+
+Simply open up Visual Studio 2022 and Click on Create New Project.
+
+{{< img src="visual-studio-template.png" >}}
+
+Important - Make sure to check the 'Place solution and project in same directory' option. Else the solution and projects will be created on different folders and there will be build errors stating that few files are not found.
+
+{{< img src="vs-same-directory.jpg" >}}
+
+Another issue I noticed with creating solutions via Visual Studio is that the Solution structure might be lost. This is a very minor bug, that maybe someone can figure out and fix in our template configuration. Microsoft doesn't seem to have very detailed guide about this.
+
+`However, it's always recommended to create new solutions via the Console.`
+
+## Running the Application
+
+Next, open up command prompt on this directory and run the following.
+
+```powershell
+code .
+```
+
+This opens up the solution via Visual Code. Make sure that you have the prerequisite tools and SDKs setup.
+
+### Setting up the Connection String
+
+Next, let's set up some valid connection strings. Navigate to `src/Host/Configurations` and open up `database.json`. Here you would have to provide a valid connection string under the `DatabaseSettings` to either MSSQL, MySQL or PostgreSQL instance. Below are some sample settings for each of the DB Providers.
+
+Details on the usage of other Settings will be explained in the upcoming documentations.
+
+`By default, FSH WebAPI tempalte ships with pre-configured PostgreSQL connection strings`
+
+{{< alert text="It is also important to update the src/Host/Configurations/hangfire.json connection string / provider as well." />}}
+
+#### PostgreSQL
+
+```powershell
+"DatabaseSettings": {
+ "ConnectionString": "Host=localhost;Database=rootTenantDb;Username=postgres;Password=root;Include Error Detail=true",
+ "DBProvider": "postgresql"
+ }
+```
+
+#### MySQL
+
+```powershell
+"DatabaseSettings": {
+ "ConnectionString": "server=localhost;uid=root;pwd=root;database=defaultRootDb;Allow User Variables=True",
+ "DBProvider": "mysql"
+ }
+```
+#### MSSQL
+
+```powershell
+"DatabaseSettings": {
+ "DBProvider": "mssql",
+ "ConnectionString": "Data Source=(localdb)\\mssqllocaldb;Initial Catalog=rootTenantDb;Integrated Security=True;MultipleActiveResultSets=True"
+ }
+```
+#### Oracle
+
+```powershell
+{
+ "DatabaseSettings": {
+ "DBProvider": "oracle",
+ "ConnectionString": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=49154))(CONNECT_DATA =(SERVER=DEDICATED)(SERVICE_NAME=ORCLPDB1.localdomain)));User Id=fullstack;Password=password123"
+ }
+}
+```
+
+That's all about settings valid connection strings.
+
+Next, let's understand how to build & run the project!
+
+You can definitely use the standard ways of dotnet to build and run the application using the following commands.
+```powershell
+ cd src/Host
+ dotnet build
+ dotnet run
+```
+
+`But`, for a better developer experience, I have included a Makefile within this template. You can find this file at the root `(./Makefile)`. This file contains a bunch of commands for better automation.
+
+Note that you will always have to be at the root of the application to execute the Makefile commands.
+
+## Build
+
+To build the solution,
+```
+make build
+```
+
+Once that's done, let's start up the API server.
+
+```
+make start
+```
+
+{{< img src="running-api-1.png" >}}
+
+{{< img src="running-api-2.png" >}}
+
+As you can see from the logs, a couple of operations happen as soon as you launch the application. Let me give a brief idea on what happens when you run the application for the very first time.
+
+- The Migrations that already come out-of-the-box with the application gets applied. Note that you do not have to manually update the database using code.
+- Being a Multitenant solution, the Application is programmed to seed a default Tenant named `root`, that is basically the super-admin of the entire application and has permissions to manage tenants.
+- Once Tenant record is seeded, the tenant admin , roles and permissions are also seeded. Note that the default credentials for the root tenant admin are as follows.
+
+```powershell
+{
+ "email":"admin@root.com",
+ "password":"123Pa$$word!"
+}
+```
+
+- The Connection String that you provided in the appSettings will be taken as the `root` Tenant's Connection. Note that all the tenant data will be stored on to this connection under the Tenants table.
+
diff --git a/content/dotnet-webapi-boilerplate/general/getting-started/install-fullstackhero.jpg b/content/en/dotnet-webapi-boilerplate/general/getting-started/install-fullstackhero.jpg
similarity index 100%
rename from content/dotnet-webapi-boilerplate/general/getting-started/install-fullstackhero.jpg
rename to content/en/dotnet-webapi-boilerplate/general/getting-started/install-fullstackhero.jpg
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/install-fullstackhero.png b/content/en/dotnet-webapi-boilerplate/general/getting-started/install-fullstackhero.png
new file mode 100644
index 00000000..7a042109
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/getting-started/install-fullstackhero.png differ
diff --git a/content/dotnet-webapi-boilerplate/general/getting-started/nuget-page.jpg b/content/en/dotnet-webapi-boilerplate/general/getting-started/nuget-page.jpg
similarity index 100%
rename from content/dotnet-webapi-boilerplate/general/getting-started/nuget-page.jpg
rename to content/en/dotnet-webapi-boilerplate/general/getting-started/nuget-page.jpg
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/running-api-1.png b/content/en/dotnet-webapi-boilerplate/general/getting-started/running-api-1.png
new file mode 100644
index 00000000..d478dcef
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/getting-started/running-api-1.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/running-api-2.png b/content/en/dotnet-webapi-boilerplate/general/getting-started/running-api-2.png
new file mode 100644
index 00000000..a378bc7f
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/getting-started/running-api-2.png differ
diff --git a/content/dotnet-webapi-boilerplate/general/getting-started/running-api.jpg b/content/en/dotnet-webapi-boilerplate/general/getting-started/running-api.jpg
similarity index 100%
rename from content/dotnet-webapi-boilerplate/general/getting-started/running-api.jpg
rename to content/en/dotnet-webapi-boilerplate/general/getting-started/running-api.jpg
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/visual-studio-template.png b/content/en/dotnet-webapi-boilerplate/general/getting-started/visual-studio-template.png
new file mode 100644
index 00000000..5d32e027
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/getting-started/visual-studio-template.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/getting-started/vs-same-directory.jpg b/content/en/dotnet-webapi-boilerplate/general/getting-started/vs-same-directory.jpg
new file mode 100644
index 00000000..f4709c07
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/general/getting-started/vs-same-directory.jpg differ
diff --git a/content/en/dotnet-webapi-boilerplate/general/makefile-commands.md b/content/en/dotnet-webapi-boilerplate/general/makefile-commands.md
new file mode 100644
index 00000000..c7f45e67
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/general/makefile-commands.md
@@ -0,0 +1,162 @@
+---
+title: "MakeFile Commands"
+description: "Here are some important MakeFile Commands that are to be used along with fullstackhero."
+lead: "Here are some important MakeFile Commands that are to be used along with fullstackhero."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2023-04-08T15:44:15+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "makefile-commands"
+ name: "MakeFile Commands"
+ parent: "general"
+weight: 5
+toc: true
+---
+
+Makefile is included within this solution to give a better developer experience. Here are the makefile commands available for this solution.
+
+`Note the the makefile commands have to be executed at the root of the solution where Makefile file exists.`
+
+## Build
+```powershell
+make build
+```
+This would internally trigger the `dotnet build` command against the `./src/Host/Host.csproj` file.
+
+## Start API
+```powershell
+make start
+```
+This boots up the WebAPI at http://localhost:5001. Make sure that you have your API COnnection strings configured before you run this command.
+
+## Nuget
+```powershell
+make nuget
+```
+This packs your Solution into a nuget package. The required .template.config folder is not included as part of the solution generated by the fsh tool, since the nuget part wont be used by many. You can get the folder in the fullstackhero dotnet webapi github repository.
+
+## Publish Docker Image
+```powershell
+make publish
+```
+Using .NET 7's Built-In Containerization feature, this command builds the docker image for you using the `dotnet publish` command internally. Here is how to setup the metadata of your docker image.
+
+Navigate to src/Host/Host.csproj file and modify the following as per your requirement.
+
+```
+
+ dotnet-webapi
+ 1.0.0;latest
+ DefaultContainer
+
+```
+
+So, my image name is dotnet-webapi and the image will be tagged with 1.0.0 and latest.
+
+Ensure that you have docker instances running before you execute this command.
+
+## Build & Publish to Docker Hub
+
+Similar to the previous command, you can build and push docker images directly to docker hub. In this case, you really dont need a docker instance running to build your docker image.
+
+```powershell
+make publish-to-hub
+```
+Note : Currently, the docker repository is set to mine. You can modify this to yours in the Makefile.
+
+### Terraform & AWS Deployments
+
+The terraform scripts are available at the `./terraform` folder.
+
+#### Prerequisites
+- Install Terraform
+- Install & Configure AWS CLI profiles to allow terraform to provision resources for you. I have made a video about [AWS Credentials Management](https://www.youtube.com/watch?v=oY0-1mj4oCo&ab_channel=MukeshMurugan).
+
+The fullstackhero webapi boilerplate comes with built-in terraform scripts to provision docker containers with your webapi image to aws infrastructure with just one line of command!
+
+Your images will be deployed to an ECS Container (FARGATE) and an RDS instance with postgresql engine would be spun up, to which your webapi container will connect to!
+
+In brief, the terraform folder has 2 sub-folders.
+- backend
+- environments/staging
+
+The Backend folder is internally used by Terraform for state management and locking. There is a one-time setup you have to do against this folder. Navigate to the backend folder and run the command.
+
+```
+terraform init
+terraform apply -auto-approve
+```
+
+This would create the required S3 Buckets and DDB table for you.
+
+Next is the `environments/staging` folder. Here too, run the following command.
+
+```
+terraform init
+```
+
+Once done, you can go the terraform.tfvars file to change the variables like,
+- project tags
+- docker image name
+- ecs cluster name and so on.
+
+After that, simply navigate back to the root of the solution and run the following commands.
+
+#### Terraform Plan
+
+The below command gives you the plan of resources that needs to be created/modified/deleted in the aws world.
+
+```powershell
+make tp
+```
+
+#### Terraform Apply
+
+This command will provision resources into AWS for you.
+
+```powershell
+make ta
+```
+
+The resources are as follows:
+1. ECS Cluster
+2. ECS Task Definitions
+3. ECS Service
+4. Cloudwatch Log Groups
+5. RDS Instance with Postgresql Engine
+6. VPC & related resources
+7. Load Balancers
+
+Once the command has completed, you will be getting an API URL, which you can use for testing!
+
+#### Terraform Destroy
+
+The below commands destroys all the resources created, related to fullstackhero.
+
+```powershell
+make td
+```
+
+## Migrations
+This command is to be executed from the Host Directory of the project.
+
+```powershell
+dotnet ef migrations add --project .././Migrators/Migrators./ --context ApplicationDbContext -o Migrations/Application
+```
+CommitMessage : Enter a commit message here.
+Provider : Enter the available DB Provider name. MSSQL , MySQL , PostgreSQL , Oracle
+
+While adding migrations for a particular provider, ensure that you have configured a valid connection string to the provider's database at both `src/Host/Configurations/database.json` and `src/Host/Configurations/hangfire.json`.
+
+## Docker Compose
+
+This project also comes with examples of docker compose files, where you can spin up the webapi and database instance in your local containers with the following commands.
+
+```powershell
+make dcu #docker compose up - Boots up the webapi & postgresql container
+make dcd #docker compose down - Shuts down the webapi & postgresql containers
+```
+
+There are also examples for mysql & mssql variations of the fsh webapi. You can find the other docker-compose files under the ./docker-compose folder. Read more about [fullstackhero's docker-compose instructions & files here](https://github.com/fullstackhero/dotnet-webapi-boilerplate/blob/main/docker-compose/README.md)
diff --git a/content/en/dotnet-webapi-boilerplate/general/overview.md b/content/en/dotnet-webapi-boilerplate/general/overview.md
new file mode 100644
index 00000000..e28dee85
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/general/overview.md
@@ -0,0 +1,324 @@
+---
+title: "Overview"
+description: ".NET WebAPI Boilerplate Template built with .NET 7.0. Incorporates the most essential Packages your projects will ever need. Follows Clean Architecture Principles."
+lead: ".NET WebAPI Boilerplate Template built with .NET 7.0. Incorporates the most essential Packages your projects will ever need. Follows Clean Architecture Principles."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2023-04-08T13:35:10+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "general-overview"
+ name: "Overview"
+ parent: "general"
+weight: 1
+toc: true
+---
+
+
+## What's fullstackhero's .NET Web API Boilerplate?
+
+fullstackhero's .NET Web API Boilerplate is a starting point for your next `.NET 7 Clean Architecture Project` that incorporates the most essential packages and features your projects will ever need including out of the box Multi-Tenancy support. This project can save well over `200+ hours` of development time for your team.
+
+> As the name suggests, this is an API / Server Boilerplate. You can find other Client Boilerplates that consume this API under `@fullstackhero` handle.
+> - Find `Blazor WebAssembly Boilerplate` here - https://github.com/fullstackhero/blazor-wasm-boilerplate
+
+## Goals
+
+The goal of this repository is to provide a complete and feature-rich starting point for any .NET Developer / Team to kick-start their next major project using .NET 7 Web API. This also serves the purpose of learning advanced concepts and implementations such as `Multitenancy, CQRS, Onion Architecture, Clean Coding standards, Cloud Deployments with Terraform to AWS, Docker Concepts, CICD Pipelines & Workflows` and so on.
+
+## Features
+
+- [x] Built on .NET 7.0
+- [x] Follows Clean Architecture Principles
+- [x] Domain Driven Design
+- [x] Cloud Ready. Can be deployed to AWS Infrastructure as ECS Containers using Terraform!
+- [x] Docker-Compose File Examples
+- [x] Documented at [fullstackhero.net](https://fullstackhero.net)
+- [x] Multi Tenancy Support with Finbuckle
+ - [x] Create Tenants with Multi Database / Shared Database Support
+ - [x] Activate / Deactivate Tenants on Demand
+ - [x] Upgrade Subscription of Tenants - Add More Validity Months to each tenant!
+- [x] Supports MySQL, MSSQL, Oracle & PostgreSQL!
+
+
+ Click to See More!
+
+- [x] Uses Entity Framework Core as DB Abstraction
+- [x] Flexible Repository Pattern
+- [x] Dapper Integration for Optimal Performance
+- [x] Serilog Integration with various Sinks - File, SEQ, Kibana
+- [x] OpenAPI - Supports Client Service Generation
+- [x] Mapster Integration for Quicker Mapping
+- [x] API Versioning
+- [x] Response Caching - Distributed Caching + REDIS
+- [x] Fluent Validations
+- [x] Audit Logging
+- [x] Advanced User & Role Based Permission Management
+- [x] Code Analysis & StyleCop Integration with Rulesets
+- [x] JSON Based Localization with Caching
+- [x] Hangfire Support - Secured Dashboard
+- [x] File Storage Service
+- [x] Test Projects
+- [x] JWT & Azure AD Authentication
+- [x] MediatR - CQRS
+- [x] SignalR Notifications
+- [x] & Much More
+
+
+## Documentation
+
+Read Documentation related to this Boilerplate here - https://fullstackhero.net/dotnet-webapi-boilerplate/
+> Feel free to contribute to the Documentation Repository - https://github.com/fullstackhero/docs
+
+## Getting Started
+
+To get started with this Boilerplate, here are the available options.
+
+- Install using the `FSH CLI` tool. Use this for release versions of the Boilerplate only.
+- Fork the Repository. Use this if you want to always keep your version of the Boilerplate up-to date with the latest changes.
+
+> Make sure that your DEV enviroment is setup, [Read the Development Environment Guide](https://fullstackhero.net/dotnet-webapi-boilerplate/general/development-environment/)
+
+### FSH CLI Tool
+
+#### Prerequisites
+
+Before creating your first fullstackhero solution, you should ensure that your local machine has:
+
+- **.NET 7** You can find the download [here](https://dotnet.microsoft.com/en-us/download/dotnet/7.0).
+- **NodeJS (16+)** You can find the download [here](https://nodejs.org/en/download).
+
+#### Installation
+
+After you have installed .NET, you will need to install the `fsh` console tool.
+
+```bash
+dotnet tool install --global FSH.CLI
+fsh install
+```
+
+This isntall the FSH CLI tools and the associated Templates. You are now ready to create your first FSH project!
+
+#### FSH .NET WebAPI Boilerplate
+Here's how you would create a Solution using the FSH .NET WebAPI Boilerplate.
+
+Simply navigate to a new directory (wherever you want to place your new solution), and open up Command Prompt at the opened directory.
+
+Run the following command. Note that, in this demonstration, I am naming my new solution as FSH.Starter.
+
+```bash
+fsh api new FSH.Starter
+```
+
+OR
+
+```bash
+fsh api n FSH.Starter
+```
+
+This will create a new .NET 7 WEBAPI solution for you using the FSH Templates.
+For further steps and details, [Read the Getting Started Guide](https://fullstackhero.net/dotnet-webapi-boilerplate/general/getting-started/)
+
+#### Update
+To update the tool & templates, run the following commands
+```bash
+dotnet tool update FSH.CLI --global
+fsh update
+```
+### Forking the Repository
+
+You would probably need to take this approach if you want to keep your source code upto date with the latest changes. To get started based on this repository, you need to get a copy locally. You have three options: fork, clone, or download.
+
+- Make a fork of this repository in your Github account.
+- Create your new `dotnet-webapi-boilerplate` personal project by cloning the forked repository on your personal github.
+- Setup an upstream remote on your personal project pointing to your forked repository using command `git remote add upstream https://github.com/{githubuseraccount}/dotnet-webapi-boilerplate` and `git remote set-url --push upstream DISABLE`
+
+For step by step instructions, [follow this](https://discord.com/channels/878181478972928011/892573122186838046/933513103688224838) and [this](https://gist.github.com/0xjac/85097472043b697ab57ba1b1c7530274).
+
+
+## Quick Start Guide
+
+So, for a better developer experience, I have added Makefile into the solution. Now that our solution is generated, let's navigate to the root folder of the solution and open up a command terminal.
+
+To build the solution,
+```
+make build
+```
+
+By default, the solution is configured to work with postgresql database (mainly because of hte OS licensing). So, you will have to make sure that postgresql database instance is up and running on your machine. You can modify the connection string to include your username and password. Connections strings can be found at `src/Host/Configurations/database.json` and `src/Host/Configurations/hangfire.json`. Once that's done, let's start up the API server.
+
+```
+make start
+```
+
+That's it, the application would connect to the defined postgresql database and start creating tables, and seed required data.
+
+For testing this API, we have 3 options.
+1. Swagger @ `localhost:5001/swagger`
+2. Postman collections are available `./postman`
+3. ThunderClient for VSCode. This is my personal favorite. You will have to install the Thunderclient extension for VSCode.
+
+The default credentials to this API is:
+
+
+```json
+{
+ "email":"admin@root.com",
+ "password":"123Pa$$word!"
+}
+```
+
+Open up Postman, Thunderclient or Swagger.
+
+identity -> get-token
+
+This is a POST Request. Here the body of the request will be the JSON (credentials) I specified earlier. And also, remember to pass the tenant id in the header of the request. The default tenant id is `root`.
+
+Here is a sample CURL command for getting the tokens.
+
+```curl
+curl -X POST \
+ 'https://localhost:5001/api/tokens' \
+ --header 'Accept: */*' \
+ --header 'tenant: root' \
+ --header 'Accept-Language: en-US' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "email": "admin@root.com",
+ "password": "123Pa$$word!"
+}'
+```
+
+And here is the response.
+
+```json
+{
+ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjM0YTY4ZjQyLWE0ZDgtNDNlMy1hNzE3LTI1OTczZjZmZTJjNyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6ImFkbWluQHJvb3QuY29tIiwiZnVsbE5hbWUiOiJyb290IEFkbWluIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbmFtZSI6InJvb3QiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9zdXJuYW1lIjoiQWRtaW4iLCJpcEFkZHJlc3MiOiIxMjcuMC4wLjEiLCJ0ZW5hbnQiOiJyb290IiwiaW1hZ2VfdXJsIjoiIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbW9iaWxlcGhvbmUiOiIiLCJleHAiOjE2ODA5NDE3MzN9.VYNaNvk2T4YDvQ3wriXgk2W_Vy9zyEEhjveNauNAeJY",
+ "refreshToken": "pyxO30zJK8KelpEXF0vPfbSbjntdlbbnxrZAlUFXfyE=",
+ "refreshTokenExpiryTime": "2023-04-15T07:15:33.5187598Z"
+}
+```
+
+You will need to pass the `token` in the request headers to authenticate calls to the fullstackhero API!
+
+For further steps and details, [Read the Getting Started Guide](https://fullstackhero.net/dotnet-webapi-boilerplate/general/getting-started/)
+
+## Containerization
+
+The API project, being .NET 7, it is configured to have built-in support for containerization. That means, you really don't need a Dockerfile to containerize the webapi.
+
+To build a docker image, all you have to do is, ensure that docker-desktop or docker instance is running. And run the following command at the root of the solution.
+
+```
+make publish
+```
+
+You can also push the docker image directly to dockerhub or any supported registry by using the following command.
+
+```
+make publish-to-hub
+```
+You will have to update your docker registry / repo url in the Makefile though!.
+
+## Docker Compose
+
+This project also comes with examples of docker compose files, where you can spin up the webapi and database isntance in your local containers with the following commands.
+
+```powershell
+make dcu #docker compose up - Boots up the webapi & postgresql container
+make dcd #docker compose down - Shuts down the webapi & postgresql containers
+```
+
+There are also examples for mysql & mssql variations of the fsh webapi. You can find the other docker-compose files under the ./docker-compose folder. Read more about [fullstackhero's docker-compose instructions & files here](./docker-compose/README.md)
+
+## Cloud Deployment with Terraform + AWS ECS
+
+This is something you wont get to see very often with boilerplates. But, we do support cloud deployment to AWS using terraform. The terraform files are available at the `./terraform` folder.
+
+### Prerequisites
+- Install Terraform
+- Install & Configure AWS CLI profiles to allow terraform to provision resources for you. I have made a video about [AWS Credentials Management](https://www.youtube.com/watch?v=oY0-1mj4oCo&ab_channel=MukeshMurugan).
+
+In brief, the terraform folder has 2 sub-folders.
+- backend
+- environments/staging
+
+The Backend folder is internally used by Terraform for state management and locking. There is a one-time setup you have to do against this folder. Navigate to the backend folder and run the command.
+
+```
+terraform init
+terraform apply -auto-approve
+```
+
+This would create the required S3 Buckets and DDB table for you.
+
+Next is the `environments/staging` folder. Here too, run the following command.
+
+```
+terraform init
+```
+
+Once done, you can go the terraform.tfvars file to change the variables like,
+- project tags
+- docker image name
+- ecs cluster name and so on.
+
+After that, simply back to the root of the solution and run the following command.
+
+```
+make ta
+```
+
+This will evaluate your terraform files and create a provision plan for you. Once you are ok, type in `yes` and the tool will start to deploy your .NET WebAPI project as containers along with a RDS PostgreSQL intance. You will be receiving the hosted api url once the provisioning is completed!
+
+To destroy the deployed resources, run the following
+```
+make td
+```
+
+## Important Links & Documentations
+
+Overview - [Read](https://fullstackhero.net/dotnet-webapi-boilerplate/general/overview/)
+
+Getting Started - [Read](https://fullstackhero.net/dotnet-webapi-boilerplate/general/getting-started/)
+
+Development Environment - [Learn about setting up the DEV environment](https://fullstackhero.net/dotnet-webapi-boilerplate/general/development-environment/)
+
+Participate in Discussions - [QNA & General Discussions](https://github.com/fullstackhero/dotnet-webapi-boilerplate/discussions)
+
+Join our Discord - [fullstackhero @ Discord](https://discord.gg/gdgHRt4mMw)
+
+## Changelogs
+
+[View Complete Changelogs.](https://github.com/fullstackhero/dotnet-webapi-boilerplate/blob/main/CHANGELOGS.md)
+
+## Community
+
+- Discord [@fullstackhero](https://discord.gg/gdgHRt4mMw)
+- Facebook Page [@codewithmukesh](https://facebook.com/codewithmukesh)
+- Youtube Channel [@codewithmukesh](https://youtube.com/c/codewithmukesh)
+
+## Contributors
+
+Submit your PR and join the elite list!
+
+
+
+
+
+## License
+
+This project is licensed with the [MIT license](https://github.com/fullstackhero/dotnet-webapi-boilerplate/blob/main/LICENSE).
+
+## Support â
+
+Has this Project helped you learn something New? or Helped you at work?
+Here are a few ways by which you can support.
+
+- Leave a star! â
+- Recommend this awesome project to your colleagues. đĨ
+- Do consider endorsing me on LinkedIn for ASP.NET Core - [Connect via LinkedIn](https://codewithmukesh.com/linkedin) đϏ
+- Sponsor the project - [opencollective/fullstackhero](https://opencollective.com/fullstackhero) â¤ī¸
+- Or, [consider buying me a coffee](https://www.buymeacoffee.com/codewithmukesh)! â
+
diff --git a/content/en/dotnet-webapi-boilerplate/general/project-structure/index.md b/content/en/dotnet-webapi-boilerplate/general/project-structure/index.md
new file mode 100644
index 00000000..bf242378
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/general/project-structure/index.md
@@ -0,0 +1,99 @@
+---
+title: "Project Structure"
+description: "Here is how the .NET WebApi Boilerplate is structured."
+lead: "Here is how the .NET WebApi Boilerplate is structured."
+date: 2021-08-24T11:40:05+05:30
+lastmod: 2021-11-28T17:35:38+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "general-project-structure"
+ name: "Project Structure"
+ parent: "general"
+weight: 6
+toc: true
+---
+
+fullstackhero's .NET WebApi Boilerplate is based on Clean Architecture. In other words, Onion / Hexagonal Architecture. [Read about the advantages and principles of Onion Architecture here â](https://codewithmukesh.com/blog/onion-architecture-in-aspnet-core/)
+
+## General Structure
+
+This means that the entire solution is built in such a way that it can be scaled, maintained easily by teams of developers. This WebAPI Solution Primarily consists of the following .csproj files.
+
+```bash
+
+âââ src
+â âââ Host
+| | âââ Host.csproj
+â âââ Core
+â | âââ Application.csproj
+â | âââ Shared.csproj
+â | âââ Domain.csproj
+| âââ Infrastructure
+| | âââ Infrastructure.csproj
+| âââ Migrators
+â | âââ Migrators.MSSQL.csproj
+â | âââ Migrators.MySQL.csproj
+â | âââ Migrators.PostgreSQL.csproj
+â | âââ Migrators.Oracle.csproj
+
+```
+
+The idea is to build a very loosely coupled architecture following best practices and packages. Let's see in brief what responsibilities each of these projects handle.
+
+### Host
+
+Contains the API Controllers and Startup Logic including ASP.NET Core Container setup. This is the entry point of the application. Also, other static files like the logs, localization jsons, images, email templates and most importantly the configuration files live under this project.
+
+With the release of 0.0.5-rc, the appSettings.json is further split into variable sub-setting like database.json, security.json and so on for better modularity and organization. You can find these new JSONs under the Configurations folder of the Host project.
+
+```bash
+âââ Host
+| âââ Configurations
+| âââ Controllers
+| âââ Email Templates
+| âââ Extensions
+| âââ Files
+â | âââ Images
+â | âââ Documents
+| âââ Localization
+| âââ Logs
+| âââ appsettings.json
+```
+
+Note that the *Host* project depends on
+- Application
+- Infrastructure
+- Migration Projects
+
+### Application
+
+This is one of the projects in the Core Folder apart from the Domain Project. Here you get to see Abstract Classes and Interfaces that are inherited and implemented in the Infrastructure Project. This refers to Dependency Inversion.
+
+``` bash
+âââ Core
+| âââ Application
+| | âââ Auditing
+| | âââ Catalog
+| | âââ Common
+| | âââ Dashboard
+| | âââ Identity
+| | âââ Multitenancy
+
+```
+
+The folders and split at the top level Feature-wise. Meaning, it now makes it easier for developers to understand the folder structure. Each of the feature folders like Catalog will have all the files related to it's scope including validators, dtos, interfaces and so on.
+
+Thus everything related to a feature will be found directly under that Feature folder.
+
+In cases where there are less number of classes / interfaces associated with a feature, all of these classes are put directly under the root of the feature folder. Only when the complexity of the feature increases, it is recommended to separate the classes by their type.
+
+Note that the *Application* project depends only on the Core projects which are `Shared` and `Domain`.
+
+### Domain
+
+Note that the *Domain* project does not depend on any other project other than the `Shared` project.
+
+As per Clean Architecture principles, the Core of this Solution i.e, Application and Domain projects do not depend on any other projects. This helps achieve Dependency Inversion (The 'D' Principle of 'SOLID').
+
diff --git a/content/dotnet-webapi-boilerplate/tutorials/_index.md b/content/en/dotnet-webapi-boilerplate/tutorials/_index.md
similarity index 100%
rename from content/dotnet-webapi-boilerplate/tutorials/_index.md
rename to content/en/dotnet-webapi-boilerplate/tutorials/_index.md
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-1.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-1.png
new file mode 100644
index 00000000..5c57fba8
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-1.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-2.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-2.png
new file mode 100644
index 00000000..89b6675b
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-2.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-3.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-3.png
new file mode 100644
index 00000000..748265de
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-permission-3.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-1.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-1.png
new file mode 100644
index 00000000..5b63b4e3
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-1.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-2.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-2.png
new file mode 100644
index 00000000..2ad8e21a
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-2.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-3.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-3.png
new file mode 100644
index 00000000..349bacd8
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/add-scope-3.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/assign-app-roles-1.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/assign-app-roles-1.png
new file mode 100644
index 00000000..ef581c53
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/assign-app-roles-1.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/assign-app-roles-2.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/assign-app-roles-2.png
new file mode 100644
index 00000000..853cbeb3
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/assign-app-roles-2.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/create-app-role-1.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/create-app-role-1.png
new file mode 100644
index 00000000..4f828f6c
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/create-app-role-1.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/create-app-role-2.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/create-app-role-2.png
new file mode 100644
index 00000000..006d3c25
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/create-app-role-2.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/index.md b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/index.md
new file mode 100644
index 00000000..ab253397
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/index.md
@@ -0,0 +1,133 @@
+---
+title: "Setting up Azure AD Authentication"
+description: "Setting up Azure AD Authentication with fullstackhero's Web API"
+lead: "Setting up Azure AD Authentication with fullstackhero's Web API"
+date: 2021-08-30T00:59:34+05:30
+lastmod: 2021-11-29T00:44:06+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "azure-ad-guide"
+ name: "Azure AD Authentication"
+ parent: "tutorials"
+weight: 12
+toc: true
+---
+
+For the Azure AD integration to work with this template, you have to create 2 `App Registrations` under your Azure AD tenant with the right settings, and then fill out the `AzureAd` section in `Configurations/security.json` to hook those apps up. This guide will walk you through doing all that.
+
+## Create the FSHApi Application Registration
+
+* Log into the azure portal and go to the [Azure Active Directory blade](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade). Make sure you are in the directory where you want your apps to be registered. You can switch directories by clicking on your account info in the top right corner.
+
+* Under `Manage`, click on `App registrations`, and click the `New registration` button on top:
+{{< img src="new-registration.png" >}}
+
+* Fill in `FSHApi` (or whichever name you want for this app) as `Name`. Under `Supported account types` select `Accounts in any organizational directory - Multitenant` and click on `Register`:
+{{< img src="register-api.png" >}}
+
+### Expose the Api
+
+* On the newly created App's blade, under `Manage`, click on `Expose an API`, then click on `Add a scope`:
+{{< img src="add-scope-1.png" >}}
+
+* An `Application ID URI`q will automatically be filled out. Click on `Save and continue`:
+{{< img src="add-scope-2.png" >}}
+
+* On the next screen, fill in `access_as_user` as `Scope name`, select `Admins and users` as `Who can consent?` and fill out the display names and descriptions like in the screenshot below, then click on `Add scope`:
+{{< img src="add-scope-3.png" >}}
+
+### Add App roles
+
+* Under `Manage`, click on `App roles` and click the `Create app role` button on top:
+{{< img src="create-app-role-1.png" >}}
+
+* Fill in `Administrators` as Display name and `Admin` as value. Especially the value is important, as this has to match the name of the role in the FSH application itself. Click on Apply:
+{{< img src="create-app-role-2.png" >}}
+
+* In the same way, create app roles for the other roles in your application (by default the only other role is the `Basic` role).
+
+## Assign App roles to specific users in AzureAD
+
+You will have to assign those freshly created App roles to the AzureAd users to which you want to grant access to your application:
+
+* On the [Azure Active Directory blade](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade), under `Manage` click on `Enterprise applications` and select the FSHApi application:
+{{< img src="assign-app-roles-1.png" >}}
+
+* Under `Manage`, click on `Users and groups` and click the `Add user/group` button on top:
+{{< img src="assign-app-roles-2.png" >}}
+
+* On the next screen, you can select one or more users/groups, select an App role and click on the `Assign` button to assign the role the the specified users/groups.
+
+## Create the Client Application Registration
+
+* Go back again to the [Azure Active Directory blade](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade) and under `Manage`, click on `App registrations`, and click the `New registration` button on top again.
+
+* This time, fill out `FSHClient` as Name, choose again for `Accounts in any organizational directory - Multitenant` and under `Redirect URI`, select `Single-page application (SPA)` and fill out the url `https://localhost:5001/swagger/oauth2-redirect.html`. Click on `Register`:
+{{< img src="register-api.png" >}}
+
+### Add permission for the Api
+
+* On the newly created App's blade, under `Manage`, click on `API permissions` and click the `Add a permission` button:
+{{< img src="add-permission-1.png" >}}
+
+* On the next view, under `Select an API`, click on `My APIs` and select FSHApi:
+{{< img src="add-permission-2.png" >}}
+
+* Then, under `Select permissions`, check the `access_as_user` permission and click on `Add permissions`:
+{{< img src="add-permission-3.png" >}}
+
+### Add Blazor Client application
+
+This should be enough for testing from swagger. But you'll probably will want to use the client application as well. There's 2 options here. Or you can add the `Redirect URI` for the client application to the same App registration you just created (click on `Authentication` under `Manage` and then on `Add URI`), or you can create a whole new client app registration specifically for this client, just like described in the steps above, but with another `Redirect URI`. In any case, the `Redirect URI` for the blazor app you will want to use is `https://localhost:5002/authentication/login-callback`.
+
+## Update the AzureAd settings on the Web Api project
+
+Now that's all set up, the only thing left is updating the configuration to use AzureAd.
+On the Web API project, under `src\Host\Configurations`, open `security.json` and fill out the required settings:
+
+* `Provider`: set to `AzureAd`
+* `Instance`: set to `https://login.microsoftonline.com/`
+* `Domain`: you can find your domain in the Azure Active Directory blade on the `Overview` page under `Primary domain`.
+* `TenantId`: set to `organizations`
+* `ClientId`: set to the `Application (client) ID` of the FSHApi App registration (you can find this on the `Overview` page of the App registration in Azure)
+* `Scopes`: set to `access_as_user`
+* `RootIssuer`: set to `https://sts.windows.net//` (your `Tenant ID` is also on the `Overview` page of the Azure Active Directory blade)
+
+Then for swagger to work you need the following settings under the `Swagger` node in `security.json`:
+
+* `AuthorizationUrl`: set to `https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize`
+* `TokenUrl`: set to `https://login.microsoftonline.com/organizations/oauth2/v2.0/token`
+* `ApiScope`: set to the full name of the api scope we created in the FSHApi App registration above (`api:///access_as_user`)
+* `OpenIdClientId`: set to the `Application (client) ID` of the FSHClient App registration (or the one you specifically created for swagger).
+
+## Update the AzureAd settings on the Blazor Client project
+
+Then for the blazor client to work, you need the following settings over there in the `wwwroot/appsettings.json` file:
+
+* `AuthProvider`: set to `AzureAd`
+* `Authority`: set to `https://login.microsoftonline.com/organizations`
+* `ClientId`: set to the `Application (client) ID` of the FSHClient App registration (or the one you specifically created for the blazor client).
+* `ValidateAuthority`: set to `true`
+* `ApiScope`: set to the full name of the api scope we created in the FSHApi App registration (`api:///access_as_user`) same as before with the swagger client.
+
+## Configuration for Postman
+
+TODO - Coming soon
+
+## Test it out
+
+* Start the Web API project and browse to `https://localhost:5001/swagger` when you click on the `Authorize` button on the top right, you should be redirected to the Microsoft login site. Log in with a user to which you granted app roles and you should be redirected back to swagger with the padlock closed. When you now issue an api call, the Authorization header should be sent with the bearer token received from AzureAd.
+
+* Start the Blazor Client project and browse to `https://localhost:5002/`. You should be immediately redirected to the Microsoft login site. And after logging in, you should be redirected back to the homepage of the blazor client.
+
+## AzureAd and multitenancy
+
+About the `RootIssuer`setting in `security.json`. This should be set to the issuer of the root tenant in AzureAd. When someone is logging in from that AzureAD tenant, the local root tenant will automatically be selected.
+
+For the other tenants there's an "issuer" field in the tenants table to map those. There's still a part which has to be implemented for mutltiple tenants from AzureAd though, as there needs to be some kind of "onboarding" experience inside AzureAD when a new tenant needs access to you application. See https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/signup for more info about this.
+
+## AzureAd users/roles vs. local users/roles
+
+In any case, with AzureAd, when a user logs in and there doesn't exist a local user yet in the local tenant for that AzureAd user/tenant, one gets created automatically. It will also immediately have the same roles assigned like the ones in AzureAd. When an already existing user logs in and there are roles in AzureAd for that user which are not yet assigned to the local user, they will automatically be assigned. Currently there will never be any roles removed from a user. So removing the role assignment from AzureAd will not automatically remove it from the local user when he logs in. This to allow for people to use the role/permission management inside the app without having to do it in Azure.
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/new-registration.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/new-registration.png
new file mode 100644
index 00000000..04975093
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/new-registration.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/register-api.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/register-api.png
new file mode 100644
index 00000000..ac25877e
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/register-api.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/register-client.png b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/register-client.png
new file mode 100644
index 00000000..42ac9322
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/azure-ad-guide/register-client.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/crud-guide/index.md b/content/en/dotnet-webapi-boilerplate/tutorials/crud-guide/index.md
new file mode 100644
index 00000000..c6ff04d0
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/tutorials/crud-guide/index.md
@@ -0,0 +1,18 @@
+---
+title: "Performing CRUD Operations"
+description: "Performing CRUD Operations with fullstackhero's Web API"
+lead: "Performing CRUD Operations with fullstackhero's Web API"
+date: 2021-08-30T00:59:34+05:30
+lastmod: 2021-11-29T00:44:06+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "crud-guide"
+ name: "Implementing CRUD"
+ parent: "tutorials"
+weight: 12
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/database-migrations/index.md b/content/en/dotnet-webapi-boilerplate/tutorials/database-migrations/index.md
new file mode 100644
index 00000000..1e00b9fb
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/tutorials/database-migrations/index.md
@@ -0,0 +1,115 @@
+---
+title: "Adding Database Migrations for Entity Framework Core"
+description: "Adding Database Migrations for Entity Framework Core with fullstackhero's Web API"
+lead: "Adding Database Migrations for Entity Framework Core with fullstackhero's Web API"
+date: 2022-01-15T21:31:40+05:30
+lastmod: 2022-01-15T21:31:44+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "database-migrations"
+ name: "Database Migrations"
+ parent: "tutorials"
+weight: 12
+toc: true
+---
+
+So, you have already added new entities into the Domain project, modified an existing entity or want to recreate all the pre-generated migrations? Here is how to proceed.
+
+Note that currently, fullstackhero's Web API supports the following major DB Providers,
+1. MSSQL
+2. MySQL
+3. PostgreSQL
+4. Oracle
+
+Download links to setup the supported Database providers are mentioned here - https://fullstackhero.net/dotnet-webapi-boilerplate/general/development-environment/
+
+To maintain scalability, the database migrations of each of these DB Providers are kept in separate class library projects namely
+1. Migrators/Migrators.MSSQL
+2. Migrators/Migrators.MySQL
+3. Migrators/Migrators.PostgreSQL
+4. Migrators/Migrators.Oracle
+
+Out of the box, the default migrations are already generated and is made available for you. This means you would'nt even have to run a `update-database` to get started. The Application startup already handles it for you.
+
+As of now, fullstackhero's Web API consists of the following EF Core DB Context classes,
+1. ApplicationDbContext - This is where you would ideally reference your new entities. By default, Catalog entities are referenced here.
+2. TenantDbContext - Related to Finbuckle's Multitenancy setup of Stores.
+
+which are maintained as 2 different sub-folders under each of the Migrator projects named as `Application` and `Tenant` folders.
+
+To start with generating the database migrations, open your terminal on to the Host Project.
+
+Note that steps are almost same for all the Database providers. But make sure that you got to have the respective connection string of the Database Provider in the `database.json` and `hangfire.json` to continue.
+
+Meaning, if you intend to create / update migrations for MySQL,
+1. You have to ensure that you have the MySQL Server up and running on your development machine.
+2. You have a valid connection string to the MySQL Server updated on both the `database.json` and `hangfire.json` configuration files. This also assumes that you have updated `"DBProvider": "mysql"` too.
+
+Below are some sample configurations for MySQL Provider. The above is applicable to all the other DB Provider.
+
+#### database.json
+
+```
+{
+ "DatabaseSettings": {
+ "ConnectionString": "server=localhost;uid=root;pwd=root;database=defaultRootDb;Allow User Variables=True",
+ "DBProvider": "mysql"
+ }
+}
+```
+#### hangfire.json
+
+```
+...
+"Storage": {
+ "StorageProvider": "mysql",
+ "ConnectionString": "server=localhost;uid=root;pwd=root;database=defaultRootDb;Allow User Variables=True",
+...
+```
+
+The Provider values for other supported DBs are as follows.
+- MSSQL - **mssql**
+- PostgreSQL - **postgresql**
+- Oracle - **oracle**
+
+Once your connection strings are all updated in the mentioned configuration files, open up the command terminal on the Host Project's directory and run the following commands.
+
+As mentioned earlier, since we have 2 Db Contexts defined in our application, we will have seperate commands for each of the available context classes.
+
+The generic command to add migrations over the **Application Db Context** goes like this,
+
+```
+dotnet ef migrations add --project .././Migrators/Migrators./ --context ApplicationDbContext -o Migrations/Application
+```
+
+where
+- `` should be replaced by an appropriate name that describes the Migration
+- `` should be replaced by your selected Database Provider (`MSSQL`, `MySQL`, `Oracle` or `PostgreSQL`)
+
+The generic command to add migrations over the **Tenant Db Context** goes like this,
+
+```
+dotnet ef migrations add --project .././Migrators/Migrators./ --context TenantDbContext -o Migrations/Tenant
+```
+
+where
+- `` should be replaced by an appropriate name that describes the Migration
+- `` should be replaced by your selected Database Provider (`MSSQL`, `MySQL`, `Oracle` or `PostgreSQL`)
+
+Keeping that in mind, here is how you would add Migrations for MySQL.
+
+1. Ensure that you have updated the connection string and dbProvider properties of both hangfire.json and database.json configuration files.
+2. Open up the command terminal on the Host Project's directory.
+3. To add migrations related to ApplicationDbContext, run
+
+```dotnet ef migrations add AddedMenuEntity --project .././Migrators/Migrators.MySQL/ --context ApplicationDbContext -o Migrations/Application```
+
+4. To add migrations related to TenantDbContext, run
+
+```dotnet ef migrations add ModifiedTenantTable --project .././Migrators/Migrators.MySQL/ --context TenantDbContext -o Migrations/Tenant```
+
+That's almost it. Once the process is completed you would be able see new Migration cs files that represent your new additions / modifications at the table level added to the respective Migrator project.
+
+You do not have to do anything extra to apply the migrations to your database. The application does it for you during the startup. Cheers!
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic1.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic1.png
new file mode 100644
index 00000000..b1f9c1fa
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic1.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic10.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic10.png
new file mode 100644
index 00000000..21d86964
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic10.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic11.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic11.png
new file mode 100644
index 00000000..a60035af
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic11.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic12.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic12.png
new file mode 100644
index 00000000..4b9fbc08
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic12.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic13.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic13.png
new file mode 100644
index 00000000..6879f388
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic13.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic14.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic14.png
new file mode 100644
index 00000000..0fcf62b5
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic14.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic15.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic15.png
new file mode 100644
index 00000000..0cdb388b
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic15.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic16.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic16.png
new file mode 100644
index 00000000..50a9b82b
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic16.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic17.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic17.png
new file mode 100644
index 00000000..2ffe763d
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic17.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic18.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic18.png
new file mode 100644
index 00000000..19f80ba9
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic18.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic19.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic19.png
new file mode 100644
index 00000000..bc14ea3e
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic19.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic2.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic2.png
new file mode 100644
index 00000000..7daeef06
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic2.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic20.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic20.png
new file mode 100644
index 00000000..6e8bb9c5
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic20.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic21.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic21.png
new file mode 100644
index 00000000..2fcfd1f2
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic21.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic22.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic22.png
new file mode 100644
index 00000000..82619db6
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic22.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic23.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic23.png
new file mode 100644
index 00000000..678d8e53
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic23.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic24.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic24.png
new file mode 100644
index 00000000..232084ad
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic24.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic25.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic25.png
new file mode 100644
index 00000000..e1bad3df
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic25.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic26.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic26.png
new file mode 100644
index 00000000..af87957a
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic26.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic27.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic27.png
new file mode 100644
index 00000000..ac60d6e9
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic27.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic28.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic28.png
new file mode 100644
index 00000000..222604ee
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic28.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic29.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic29.png
new file mode 100644
index 00000000..30500514
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic29.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic3.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic3.png
new file mode 100644
index 00000000..de8e80ee
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic3.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic30.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic30.png
new file mode 100644
index 00000000..b0785b4a
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic30.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic31.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic31.png
new file mode 100644
index 00000000..61ddd237
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic31.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic32.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic32.png
new file mode 100644
index 00000000..8672d7a5
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic32.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic33.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic33.png
new file mode 100644
index 00000000..7cd218fc
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic33.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic34.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic34.png
new file mode 100644
index 00000000..28a50a99
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic34.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic36.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic36.png
new file mode 100644
index 00000000..f900cc3f
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic36.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic37.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic37.png
new file mode 100644
index 00000000..be7165d8
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic37.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic38.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic38.png
new file mode 100644
index 00000000..1b89fdbf
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic38.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic39.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic39.png
new file mode 100644
index 00000000..291bf657
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic39.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic4.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic4.png
new file mode 100644
index 00000000..53807f20
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic4.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic40.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic40.png
new file mode 100644
index 00000000..94742e50
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic40.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic5.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic5.png
new file mode 100644
index 00000000..9b438973
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic5.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic6.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic6.png
new file mode 100644
index 00000000..e66218d0
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic6.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic7.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic7.png
new file mode 100644
index 00000000..882fab8b
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic7.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic8.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic8.png
new file mode 100644
index 00000000..f5dac01f
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic8.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic9.png b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic9.png
new file mode 100644
index 00000000..0cc555b3
Binary files /dev/null and b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/azuredeployment-pic9.png differ
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/index.md b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/index.md
new file mode 100644
index 00000000..356fcb82
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-azure/index.md
@@ -0,0 +1,221 @@
+---
+title: "Deploying to Azure AppService"
+description: "Deploying fullstackhero's Web API to Azure AppService from Visual Studio"
+lead: "Deploying fullstackhero's Web API to Azure AppService from Visual Studio"
+date: 2022-05-12T21:30:38+05:30
+lastmod: 2022-05-12T21:30:33+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "deploying-to-azure"
+ name: "Deploying to Azure AppService"
+ parent: "tutorials"
+weight: 14
+toc: true
+---
+
+To Get started, Insure you `Signin` in `Visual Studio` `2019` or `2022` with an account registered in `Azure Portal` and having an active `subscription`
+
+Step 1: Right click Host project as shown on the picture below and click Publish
+
+{{< img src="azuredeployment-pic1.png" >}}
+
+Step 2: Select Azure from the Dialog as shown below and click Next
+
+{{< img src="azuredeployment-pic2.png" >}}
+
+Step 3: Select Azure App Service (Windows) as shown below and click Next
+
+{{< img src="azuredeployment-pic3.png" >}}
+
+Step 4: Click the green Plus(+) button to create an new `App Service Instance`. Notice the `Subscription` name, you must select your active subscription.
+
+{{< img src="azuredeployment-pic4.png" >}}
+
+Step 5: Write your `Api` name, this will form part of your application link(url)
+Select same `Subscription` name as previously
+Click New on `Resource group` to create new resource group.
+
+{{< img src="azuredeployment-pic5.png" >}}
+
+Step 6: Write a `Resource group` name, this is a grouping for resource to be created in Azure. I wrote `Mango-RG`, write your own `resource group` name. Click Ok to save it.
+
+{{< img src="azuredeployment-pic6.png" >}}
+
+Step 7: Notice Our `Resource group` name appears. Now click New to create a new `Hosting plan`
+
+{{< img src="azuredeployment-pic7.png" >}}
+
+Step 8: Give a `Hosting Plan` name, `Location` I kept the default, but you may need to select the closest area to you. Click dropdown on `Size`, select `Free`, this is a free plan, you are welcome to choose any you can afford through your subscription. Click Ok.
+
+{{< img src="azuredeployment-pic8.png" >}}
+
+Step 9: Click Create as shown below, at this point your resources will be created in `Azure Portal`
+
+{{< img src="azuredeployment-pic9.png" >}}
+
+Step 10: Notice your `Api` Application instance has been created. Now Click finish.
+
+{{< img src="azuredeployment-pic10.png" >}}
+
+Step 11: At this point we can see all our resources.
+Before we start configuring, do the following
+Install these packages in `Host` project, make sure they are of the same `version` as installed in `Infrastructure`. Doing this help avoid errors later.
+
+* Microsoft.EntityFrameworkCore.SqlServer
+* Microsoft.EntityFrameworkCore.Tools
+
+Now back to publish tab in `Visual Studio`.
+Click Configure under Service Dependencies to create `database` resources.
+
+{{< img src="azuredeployment-pic11.png" >}}
+
+Step 12: Select `Azure SQL Database` to create database hosted in `Azure`. Click Next
+
+{{< img src="azuredeployment-pic12.png" >}}
+
+Step 12: Select the same `subscription` as before. Click the green Plus(+) button to create `database server` and `database` in `Azure`.
+
+{{< img src="azuredeployment-pic13.png" >}}
+
+Step 13: Give a `database` name, notice the validation error! A `database server` needs to be first created. Now click the New button to create it.
+
+{{< img src="azuredeployment-pic14.png" >}}
+
+Step 14: Give `database server` name, Location (nearest to you), admin `username` (used to access this `database server`) and `password`. Click Ok, to start creating the `server` and `database` in `Azure Portal`. This will take few minutes. NB note down username and password. I usually add them to a notepad.
+
+{{< img src="azuredeployment-pic15.png" >}}
+
+Step 15: Notice our `database server` and `database` are created, see within green block. Now select this row and click Next.
+
+{{< img src="azuredeployment-pic16.png" >}}
+
+Step 16: Fill in `ConnectionString` key as it in `appsetting.json`, mine is `DefaultConnection`,
+`Username` and `Password` create in Step 14. Click the green block to copy the connection and save it on notepad or anywhere you will be able to find it. Click None
+
+{{< img src="azuredeployment-pic17.png" >}}
+
+Step 17: Click finish and restore of `NuGet packages` will begin. Make sure `NuGet packages` is checked.
+
+{{< img src="azuredeployment-pic18.png" >}}
+
+NB. If you get an error, follow Step 11. The error is caused by package restore for `Host` project, it needs `Microsoft.EntityFrameworkCore.SqlServer` and
+`Microsoft.EntityFrameworkCore.Tools` for database migration. The tool tries to install them for you but it only picks versions `6.0.0` which are not the same versions as those installed in `Infrastructure`. Get that?
+
+You will be taken back to Step 12 but donât panic, you wonât have to create `database` and `database server` as they are already created.
+
+
+The restore should be successful as shown below.
+
+{{< img src="azuredeployment-pic19.png" >}}
+
+Click Close
+
+NB. Replace the `ConnectionStrings` in both `database.json` and `hangfire.json` with the one you have just created above. This means youâre `Api` will now point to `Azure` database server.
+
+Step 18: Login Azure Portal to verify all resources we have just created. Notice all our resources are on the list. Nice. Now let go to `Visual Studio` and `deploy` our `Api`
+
+{{< img src="azuredeployment-pic20.png" >}}
+
+Step 19: In `Visual Studio`, Click Publish (green block), this mean you are now `deploying` you `Api` to the `Azure` and can be access on the internet using the url on Site as indicated on the picture.
+
+{{< img src="azuredeployment-pic21.png" >}}
+
+Publish is successful and the `Api` was automatically launched in a browser
+
+{{< img src="azuredeployment-pic22.png" >}}
+
+Deployment error as the `Api` is launched in the browser.
+
+{{< img src="azuredeployment-pic23.png" >}}
+
+Step 20: This error is caused by `Azure` blocking all public access to the `database server` via IP address.
+
+To see this on the Log file that our application generate, do the following
+1. Open a new tab in your browser
+2. Write your `Api` url and add `.scm` before `azurewebsites.net`
+Example: `https://mangoapi-test.scm.azurewebsites.net/`
+3. This is a Kudu dashboard that can be used for debuging your deployed applications, in our case we are debugging our `Api`
+4. Click on Debug console as indicated by an arrow, select CMD
+
+{{< img src="azuredeployment-pic24.png" >}}
+
+5. Click `site`
+
+{{< img src="azuredeployment-pic25.png" >}}
+
+6. Click `wwwroot`
+
+{{< img src="azuredeployment-pic26.png" >}}
+
+7. Look for `Logs` folder
+
+{{< img src="azuredeployment-pic27.png" >}}
+
+8. Click the download icon where the arrow points to, this should open a new browser tab with your `log` file.
+
+{{< img src="azuredeployment-pic28.png" >}}
+
+This is what the `log` exception says
+
+Microsoft.Data.SqlClient.SqlException (0x80131904): Cannot open server `'mangotestdbdbserver'` requested by the login. Client with IP address `'20.****.40.0'` is not allowed to access the server. To enable access, use the Windows Azure Management Portal or run `sp_set_firewall_rule` on the `master database` to create a `firewall rule` for this IP address or address range.
+
+I now need to grant this `IP address` access to my `database server` in `Azure Portal`
+
+
+9. Go to the `database server` you have created, in my case is `mangotestdbserver`
+
+{{< img src="azuredeployment-pic30.png" >}}
+
+Click on `SQL databases` to view your `database`, it will appear in the table, click it.
+
+{{< img src="azuredeployment-pic31.png" >}}
+
+10. Click `Set server firewall` within the red block
+
+{{< img src="azuredeployment-pic32.png" >}}
+
+11. Click Add a `firewall rule`
+
+{{< img src="azuredeployment-pic33.png" >}}
+
+12. On the dialog I add my local `IP address` (suggested by azure) and `IP address` as show from the `log` because I want this `IP address` and my local machine to have access to the `SQL Server`
+
+{{< img src="azuredeployment-pic34.png" >}}
+
+Click Save
+
+Go to `Visual Studio` and Click Publish (Step 19)
+
+Now the launched browser shows `404`, relax you have done it.
+
+{{< img src="azuredeployment-pic36.png" >}}
+
+To view `Api` documentation in `swagger`, append `/swagger/index.html` to the `url` and you should see your `api`.
+
+See below
+
+{{< img src="azuredeployment-pic37.png" >}}
+
+## Testing via Postman
+
+You are welcome to use any `Api` client you like for testing.
+
+Add your deployed `Api` `url` like I did below
+
+{{< img src="azuredeployment-pic38.png" >}}
+
+Letâs test `get-token` endpoint
+
+{{< img src="azuredeployment-pic39.png" >}}
+
+Click Sent
+
+I get a response back and it includes a token as expected!!!!
+
+{{< img src="azuredeployment-pic40.png" >}}
+
+Thatâs it guys, hope this can help someone. Screenshots are not of the best quality.
+
+The deployed `Api` can be accessed here `https://mangoapi-test.azurewebsites.net/swagger/index.html`
\ No newline at end of file
diff --git a/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-iis/index.md b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-iis/index.md
new file mode 100644
index 00000000..3aa41718
--- /dev/null
+++ b/content/en/dotnet-webapi-boilerplate/tutorials/deploying-to-iis/index.md
@@ -0,0 +1,18 @@
+---
+title: "Deploying to IIS"
+description: "Deploying fullstackhero's Web API to IIS"
+lead: "Deploying fullstackhero's Web API to IIS"
+date: 2021-08-30T00:59:34+05:30
+lastmod: 2021-11-29T00:44:06+05:30
+draft: false
+images: []
+menu:
+ dotnet-webapi-boilerplate:
+ identifier: "deploying-to-iis"
+ name: "Deploying to IIS"
+ parent: "tutorials"
+weight: 13
+toc: true
+---
+
+Documentation Coming Soon!
diff --git a/content/en/privacy-policy/index.md b/content/en/privacy-policy/index.md
new file mode 100644
index 00000000..0ef38e23
--- /dev/null
+++ b/content/en/privacy-policy/index.md
@@ -0,0 +1,35 @@
+---
+title: "Privacy Policy"
+description: "We do not use cookies and we do not collect any personal data."
+date: 2020-08-27T19:23:18+02:00
+lastmod: 2020-08-27T19:23:18+02:00
+draft: false
+images: []
+---
+
+__TLDR__: We do not use cookies and we do not collect any personal data.
+
+## Website visitors
+
+- No personal information is collected.
+- No information is stored in the browser.
+- No information is shared with, sent to or sold to third-parties.
+- No information is shared with advertising companies.
+- No information is mined and harvested for personal and behavioral trends.
+- No information is monetized.
+
+### Information we collect and what we use it for
+
+We run [Plausible](https://plausible.io/) analytics on getdoks.org. The following information is collected:
+
+- __Page URL__. We track the page URL of each page view on this website. We use this to understand which pages have been viewed and how many times a particular page has been viewed. For example: _https://getdoks.org/_.
+- __HTTP Referrer__. We use the referrer string to understand the number of visitors referred to this website from links on other sites. For example: _https://github.com/_.
+- __Browser__. We use this to understand what browsers people use when visiting this website. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: _Chrome_.
+- __Operating system__. We use this to understand what operating systems people use when visiting this website. We only use the brand of the operating system and donât include the version number or any other details. This is derived from the User-Agent HTTP header. The full User-Agent is discarded. For example: _GNU/Linux_.
+- __Device type__. We use this to understand what devices people use when visiting this website. This is derived from window.innerWidth. The actual width of the browser in pixels is discarded. For example: _Desktop_.
+- __Visitor Country__. We look up the visitorâs country using the IP address. We do not track anything more granular than the country of origin and the IP address of the visitor is discarded. We never store IP addresses in our database or logs. For example: _Canada_.
+
+## Contact us
+
+
+Effective Date: _27th August 2020_
diff --git a/content/en/versions.md b/content/en/versions.md
new file mode 100644
index 00000000..ddbe0020
--- /dev/null
+++ b/content/en/versions.md
@@ -0,0 +1,11 @@
+---
+title: "Versions"
+description: ""
+lead: "An appendix of hosted documentation for nearly every release of Doks, from v0 through v3."
+date: 2021-09-24T08:50:23+02:00
+lastmod: 2021-09-24T08:50:23+02:00
+draft: true
+images: []
+layout: versions
+url: "/docs/versions/"
+---
diff --git a/content/getting-started/_index.md b/content/getting-started/_index.md
deleted file mode 100644
index 82a566a6..00000000
--- a/content/getting-started/_index.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title : "fullstackhero - What's it?"
-description: "fullstackhero is a collection of Enterprise Level Boilerplates for Modern Web Applications that gets you started with premium application development in no-time!"
-lead: ""
-date: 2021-08-24T11:40:05+05:30
-lastmod: 2021-08-24T12:44:46+05:30
-draft: false
-images: []
----
-
-## Benefits of fullstackhero
-
-* Given that fullstackhero is a collection of open source projects, it's completely free to use and distribute.
-
-
-## Projects
-
-### .NET WebAPI
-
-[Read Documentation â](/dotnet-webapi-boilerplate/)
-
-### Angular Material
-
-### .NET MVC
-
-### Blazor WebAssembly
-
-
-## Contact
-
-[Contact me]({{< relref "contact/index.md" >}}) if you have any questions.
diff --git a/content/getting-started/angular.svg b/content/getting-started/angular.svg
deleted file mode 100644
index ac4992b0..00000000
--- a/content/getting-started/angular.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/content/nl/_index.md b/content/nl/_index.md
new file mode 100644
index 00000000..58c6b69f
--- /dev/null
+++ b/content/nl/_index.md
@@ -0,0 +1,10 @@
+---
+title : "Modern documentatie-thema"
+description: "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn â standaard."
+lead: "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn â standaard."
+date: 2020-10-06T08:47:36+00:00
+lastmod: 2020-10-06T08:47:36+00:00
+draft: false
+images: []
+---
+
diff --git a/content/nl/contact/index.md b/content/nl/contact/index.md
new file mode 100644
index 00000000..795089f6
--- /dev/null
+++ b/content/nl/contact/index.md
@@ -0,0 +1,10 @@
+---
+title: "Contact"
+description: "Drop us an email."
+date: 2020-08-27T19:25:12+02:00
+lastmod: 2020-08-27T19:25:12+02:00
+draft: true
+images: []
+---
+
+{{< email user="hello" domain="getdoks.org" >}}
diff --git a/content/nl/contributors/_index.md b/content/nl/contributors/_index.md
new file mode 100644
index 00000000..e225f344
--- /dev/null
+++ b/content/nl/contributors/_index.md
@@ -0,0 +1,10 @@
+---
+title: "Contributors"
+description: "The Doks contributors."
+date: 2020-10-06T08:50:29+00:00
+lastmod: 2020-10-06T08:50:29+00:00
+draft: false
+images: []
+---
+
+The Doks contributors.
diff --git a/content/nl/contributors/henk-verlinde/_index.md b/content/nl/contributors/henk-verlinde/_index.md
new file mode 100644
index 00000000..f775534e
--- /dev/null
+++ b/content/nl/contributors/henk-verlinde/_index.md
@@ -0,0 +1,12 @@
+---
+title: "Henk Verlinde"
+description: "Creator of Hyas."
+date: 2020-10-06T08:50:45+00:00
+lastmod: 2020-10-06T08:50:45+00:00
+draft: false
+images: []
+---
+
+Creator of Hyas.
+
+[@HenkVerlinde](https://twitter.com/henkverlinde)
diff --git a/content/nl/docs/_index.md b/content/nl/docs/_index.md
new file mode 100644
index 00000000..f807c652
--- /dev/null
+++ b/content/nl/docs/_index.md
@@ -0,0 +1,9 @@
+---
+title : "Docs"
+description: "Docs Doks."
+lead: ""
+date: 2020-10-06T08:48:23+00:00
+lastmod: 2020-10-06T08:48:23+00:00
+draft: false
+images: []
+---
diff --git a/content/nl/docs/help/_index.md b/content/nl/docs/help/_index.md
new file mode 100644
index 00000000..bc503ecf
--- /dev/null
+++ b/content/nl/docs/help/_index.md
@@ -0,0 +1,9 @@
+---
+title: "Help"
+description: "Help Doks."
+lead: ""
+date: 2020-10-06T08:49:15+00:00
+lastmod: 2020-10-06T08:49:15+00:00
+draft: false
+images: []
+---
diff --git a/content/nl/docs/help/faq.md b/content/nl/docs/help/faq.md
new file mode 100644
index 00000000..f0c3bb4d
--- /dev/null
+++ b/content/nl/docs/help/faq.md
@@ -0,0 +1,50 @@
+---
+title: "FAQ"
+description: "Answers to frequently asked questions."
+lead: "Answers to frequently asked questions."
+date: 2020-10-06T08:49:31+00:00
+lastmod: 2020-10-06T08:49:31+00:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "help"
+weight: 630
+toc: true
+---
+
+## Hyas?
+
+Doks is a [Hyas theme](https://gethyas.com/themes/) build by the creator of Hyas.
+
+## Footer notice?
+
+Please keep it in place.
+
+## Keyboard shortcuts for search?
+
+- focus: `Ctrl + /`
+- select: `â` and `â`
+- open: `Enter`
+- close: `Esc`
+
+## Other documentation?
+
+- [Netlify](https://docs.netlify.com/)
+- [Hugo](https://gohugo.io/documentation/)
+
+## Can I get support?
+
+Create a topic:
+
+- [Netlify Community](https://community.netlify.com/)
+- [Hugo Forums](https://discourse.gohugo.io/)
+- [Doks Discussions](https://github.com/h-enk/doks/discussions)
+
+## Contact the creator?
+
+Send `h-enk` a message:
+
+- [Netlify Community](https://community.netlify.com/)
+- [Hugo Forums](https://discourse.gohugo.io/)
+- [Doks Discussions](https://github.com/h-enk/doks/discussions)
diff --git a/content/nl/docs/help/how-to-update.md b/content/nl/docs/help/how-to-update.md
new file mode 100644
index 00000000..f9bb36b9
--- /dev/null
+++ b/content/nl/docs/help/how-to-update.md
@@ -0,0 +1,32 @@
+---
+title: "How to Update"
+description: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
+lead: "Regularly update the installed npm packages to keep your Doks website stable, usable, and secure."
+date: 2020-11-12T13:26:54+01:00
+lastmod: 2020-11-12T13:26:54+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "help"
+weight: 610
+toc: true
+---
+
+{{< alert icon="đĄ" text="Learn more about semantic versioning and advanced range syntax." />}}
+
+## Check for outdated packages
+
+The [`npm outdated`](https://docs.npmjs.com/cli/v7/commands/npm-outdated) command will check the registry to see if any (or, specific) installed packages are currently outdated:
+
+```bash
+npm outdated [[<@scope>/] ...]
+```
+
+## Update packages
+
+The [`npm update`](https://docs.npmjs.com/cli/v7/commands/npm-update) command will update all the packages listed to the latest version (specified by the tag config), respecting semver:
+
+```bash
+npm update [...]
+```
diff --git a/content/nl/docs/help/troubleshooting.md b/content/nl/docs/help/troubleshooting.md
new file mode 100644
index 00000000..0d52dbb1
--- /dev/null
+++ b/content/nl/docs/help/troubleshooting.md
@@ -0,0 +1,30 @@
+---
+title: "Troubleshooting"
+description: "Solutions to common problems."
+lead: "Solutions to common problems."
+date: 2020-11-12T15:22:20+01:00
+lastmod: 2020-11-12T15:22:20+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "help"
+weight: 620
+toc: true
+---
+
+## Problems updating npm packages
+
+Delete the `./node_modules` folder, and run again:
+
+```bash
+npm install
+```
+
+## Problems with cache
+
+Delete the temporary directories:
+
+```bash
+npm run clean
+```
diff --git a/content/nl/docs/prologue/_index.md b/content/nl/docs/prologue/_index.md
new file mode 100644
index 00000000..c3c1c40b
--- /dev/null
+++ b/content/nl/docs/prologue/_index.md
@@ -0,0 +1,9 @@
+---
+title : "Prologue"
+description: "Prologue Doks."
+lead: ""
+date: 2020-10-06T08:48:45+00:00
+lastmod: 2020-10-06T08:48:45+00:00
+draft: false
+images: []
+---
diff --git a/content/nl/docs/prologue/commands.md b/content/nl/docs/prologue/commands.md
new file mode 100644
index 00000000..e647a98e
--- /dev/null
+++ b/content/nl/docs/prologue/commands.md
@@ -0,0 +1,98 @@
+---
+title: "Commands"
+description: "Doks comes with commands for common tasks."
+lead: "Doks comes with commands for common tasks."
+date: 2020-10-13T15:21:01+02:00
+lastmod: 2020-10-13T15:21:01+02:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "prologue"
+weight: 130
+toc: true
+---
+
+{{< alert icon="đĄ" text="You can change the commands in the scripts section of `./package.json`." />}}
+
+## create
+
+Create new content for your site:
+
+```bash
+npm run create [path] [flags]
+```
+
+See also the Hugo docs: [hugo new](https://gohugo.io/commands/hugo_new/).
+
+## lint
+
+Check scripts, styles, and markdown for errors:
+
+```bash
+npm run lint
+```
+
+### scripts
+
+Check scripts for errors:
+
+```bash
+npm run lint:scripts [-- --fix]
+```
+
+### styles
+
+Check styles for errors:
+
+```bash
+npm run lint:styles [-- --fix]
+```
+
+### markdown
+
+Check markdown for errors:
+
+```bash
+npm run lint:markdown [-- --fix]
+```
+
+## clean
+
+Delete temporary directories:
+
+```bash
+npm run clean
+```
+
+## start
+
+Start local development server:
+
+```bash
+npm run start
+```
+
+## build
+
+Build production website:
+
+```bash
+npm run build
+```
+
+### functions
+
+Build Lambda functions:
+
+```bash
+npm run build:functions
+```
+
+### preview
+
+Build production website including draft and future content:
+
+```bash
+npm run build:preview
+```
diff --git a/content/nl/docs/prologue/introduction.md b/content/nl/docs/prologue/introduction.md
new file mode 100644
index 00000000..f2155338
--- /dev/null
+++ b/content/nl/docs/prologue/introduction.md
@@ -0,0 +1,58 @@
+---
+title: "Introduction"
+description: "Doks is a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready â by default."
+lead: "Doks is a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready â by default."
+date: 2020-10-06T08:48:57+00:00
+lastmod: 2020-10-06T08:48:57+00:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "prologue"
+weight: 100
+toc: true
+---
+
+## Get started
+
+There are two main ways to get started with Doks:
+
+### Tutorial
+
+{{< alert icon="đ" text="The Tutorial is intended for novice to intermediate users." />}}
+
+Step-by-step instructions on how to start a new Doks project. [Tutorial â](https://getdoks.org/tutorial/introduction/)
+
+### Quick Start
+
+{{< alert icon="đ" text="The Quick Start is intended for intermediate to advanced users." />}}
+
+One page summary of how to start a new Doks project. [Quick Start â]({{< relref "quick-start" >}})
+
+## Go further
+
+Recipes, Reference Guides, Extensions, and Showcase.
+
+### Recipes
+
+Get instructions on how to accomplish common tasks with Doks. [Recipes â](https://getdoks.org/docs/recipes/project-configuration/)
+
+### Reference Guides
+
+Learn how to customize Doks to fully make it your own. [Reference Guides â](https://getdoks.org/docs/reference-guides/security/)
+
+### Extensions
+
+Get instructions on how to add even more to Doks. [Extensions â](https://getdoks.org/docs/extensions/breadcrumb-navigation/)
+
+### Showcase
+
+See what others have build with Doks. [Showcase â](https://getdoks.org/showcase/electric-blocks/)
+
+## Contributing
+
+Find out how to contribute to Doks. [Contributing â](https://getdoks.org/docs/contributing/how-to-contribute/)
+
+## Help
+
+Get help on Doks. [Help â]({{< relref "how-to-update" >}})
diff --git a/content/nl/docs/prologue/quick-start.md b/content/nl/docs/prologue/quick-start.md
new file mode 100644
index 00000000..9282d3ee
--- /dev/null
+++ b/content/nl/docs/prologue/quick-start.md
@@ -0,0 +1,69 @@
+---
+title: "Quick Start"
+description: "One page summary of how to start a new Doks project."
+lead: "One page summary of how to start a new Doks project."
+date: 2020-11-16T13:59:39+01:00
+lastmod: 2020-11-16T13:59:39+01:00
+draft: false
+images: []
+menu:
+ docs:
+ parent: "prologue"
+weight: 110
+toc: true
+---
+
+## Requirements
+
+Doks uses npm to centralize dependency management, making it [easy to update]({{< relref "how-to-update" >}}) resources, build tooling, plugins, and build scripts:
+
+- Download and install [Node.js](https://nodejs.org/) (it includes npm) for your platform.
+
+## Start a new Doks project
+
+Create a new site, change directories, install dependencies, and start development server.
+
+### Create a new site
+
+Doks is available as a child theme, and a starter theme:
+
+- Use the Doks child theme, if you do __not__ plan to customize a lot, and/or need future Doks updates.
+- Use the Doks starter theme, if you plan to customize a lot, and/or do __not__ need future Doks updates.
+
+Not quite sure? Use the Doks child theme.
+
+#### Doks child theme
+
+```bash
+git clone https://github.com/h-enk/doks-child-theme.git my-doks-site
+```
+
+#### Doks starter theme
+
+```bash
+git clone https://github.com/h-enk/doks.git my-doks-site
+```
+
+### Change directories
+
+```bash
+cd my-doks-site
+```
+
+### Install dependencies
+
+```bash
+npm install
+```
+
+### Start development server
+
+```bash
+npm run start
+```
+
+Doks will start the Hugo development webserver accessible by default at `http://localhost:1313`. Saved changes will live reload in the browser.
+
+## Other commands
+
+Doks comes with commands for common tasks. [Commands â]({{< relref "commands" >}})
diff --git a/content/privacy-policy/index.md b/content/nl/privacy-policy/index.md
similarity index 96%
rename from content/privacy-policy/index.md
rename to content/nl/privacy-policy/index.md
index 9b0a01d5..63150240 100644
--- a/content/privacy-policy/index.md
+++ b/content/nl/privacy-policy/index.md
@@ -1,9 +1,9 @@
---
title: "Privacy Policy"
description: "We do not use cookies and we do not collect any personal data."
-date: 2021-08-24T11:40:05+05:30
-lastmod: 2021-08-24T11:40:16+05:30
-draft: false
+date: 2020-08-27T19:23:18+02:00
+lastmod: 2020-08-27T19:23:18+02:00
+draft: true
images: []
---
diff --git a/data/docs-versions.yml b/data/docs-versions.yml
new file mode 100644
index 00000000..8e7e5dd9
--- /dev/null
+++ b/data/docs-versions.yml
@@ -0,0 +1,60 @@
+# - group: v1.x
+# baseurl: "https://getbootstrap.com"
+# description: "Every minor and patch release from v1 is listed below."
+# versions:
+# - v: "1.0.0"
+# - v: "1.1.0"
+# - v: "1.1.1"
+# - v: "1.2.0"
+# - v: "1.3.0"
+# - v: "1.4.0"
+#
+# - group: v2.x
+# baseurl: "https://getbootstrap.com"
+# description: "Every minor and patch release from v2 is listed below."
+# versions:
+# - v: "2.0.0"
+# - v: "2.0.1"
+# - v: "2.0.2"
+# - v: "2.0.3"
+# - v: "2.0.4"
+# - v: "2.1.0"
+# - v: "2.1.1"
+# - v: "2.2.0"
+# - v: "2.2.1"
+# - v: "2.2.2"
+# - v: "2.3.0"
+# - v: "2.3.1"
+# - v: "2.3.2"
+#
+# - group: v3.x
+# baseurl: "https://getbootstrap.com/docs"
+# description: "Every minor and patch release from v3 is listed below. Last update was v3.4.1."
+# versions:
+# - v: "3.3"
+# - v: "3.4"
+#
+# - group: v4.x
+# baseurl: "https://getbootstrap.com/docs"
+# description: "Our previous major release with its minor releases. Last update was v4.6.0."
+# versions:
+# - v: "4.0"
+# - v: "4.1"
+# - v: "4.2"
+# - v: "4.3"
+# - v: "4.4"
+# - v: "4.5"
+# - v: "4.6"
+
+- group: v0.x
+ baseurl: "/docs"
+ description: "Current major release. Last update was v0.2.0."
+ versions:
+ - v: "0.1"
+ - v: "0.2"
+
+- group: v1.x
+ baseurl: "/docs"
+ description: "Every minor and patch release from v1 is listed below. Last update was v1.0.0."
+ versions:
+ - v: "1.0"
diff --git a/i18n/en.toml b/i18n/en.toml
new file mode 100644
index 00000000..cb52685f
--- /dev/null
+++ b/i18n/en.toml
@@ -0,0 +1,2 @@
+[get-started]
+ other = "Get Started"
\ No newline at end of file
diff --git a/i18n/nl.toml b/i18n/nl.toml
new file mode 100644
index 00000000..f80323ee
--- /dev/null
+++ b/i18n/nl.toml
@@ -0,0 +1,2 @@
+[get-started]
+ other = "Aan de slag"
\ No newline at end of file
diff --git a/images/screenshot.png b/images/screenshot.png
index acbfb55e..072753bb 100644
Binary files a/images/screenshot.png and b/images/screenshot.png differ
diff --git a/images/tn.png b/images/tn.png
index fecf5c5b..ff29c682 100644
Binary files a/images/tn.png and b/images/tn.png differ
diff --git a/layouts/_default/_markup/.gitkeep b/layouts/_default/_markup/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/layouts/_default/_markup/render-heading.html b/layouts/_default/_markup/render-heading.html
new file mode 100644
index 00000000..8abeac6c
--- /dev/null
+++ b/layouts/_default/_markup/render-heading.html
@@ -0,0 +1 @@
+{{ .Text | safeHTML }} #
diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html
new file mode 100644
index 00000000..4a44740e
--- /dev/null
+++ b/layouts/_default/_markup/render-image.html
@@ -0,0 +1,36 @@
+{{ $image := "" -}}
+{{ if (urls.Parse .Destination).IsAbs }}
+ {{ $image = resources.GetRemote .Destination -}}
+{{ else -}}
+ {{ $image = .Page.Resources.GetMatch .Destination -}}
+{{ end -}}
+{{ with $image -}}
+ {{ $lqip := $image.Resize site.Params.lqipWidth -}}
+
+ {{ $imgSrc := "" -}}
+ {{ $imgSrcSet := slice -}}
+
+ {{ $widths := site.Params.landscapePhotoWidths -}}
+ {{ if gt $image.Height $image.Width -}}
+ {{ $widths = site.Params.portraitPhotoWidths -}}
+ {{ end -}}
+
+ {{ range $widths -}}
+ {{ $srcUrl := (printf "%dx" . | $image.Resize).Permalink -}}
+ {{ if eq $imgSrc "" -}}{{ $imgSrc = $srcUrl -}}{{ end -}}
+ {{ $imgSrcSet = $imgSrcSet | append (printf "%s %dw" $srcUrl .) -}}
+ {{ end -}}
+ {{ $imgSrcSet = (delimit $imgSrcSet ",") -}}
+
+ {{ if gt $image.Width site.Params.smallLimit -}}
+
+
+
+ {{ with $.Title }}{{ . | safeHTML }}{{ end -}}
+
+ {{ else -}}
+
+ {{ end -}}
+{{ else -}}
+ {{ erroridf "image-not-found" "Image not found" -}}
+{{ end -}}
\ No newline at end of file
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index cd81b7c6..21113b64 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -1,36 +1,30 @@
-
-{{ partial "head/head.html" . }}
-{{ if eq .Kind "home" -}}
-{{ .Scratch.Set "class" "home" -}}
-{{ else if eq .Kind "404" -}}
-{{ .Scratch.Set "class" "error404" -}}
-{{ else if eq .Kind "page" -}}
-{{ .Scratch.Set "class" .Type -}}
-{{ .Scratch.Add "class" " single" -}}
-{{ else -}}
-{{ .Scratch.Set "class" .Type -}}
-{{ .Scratch.Add "class" " list" -}}
-{{ end -}}
-
-
- {{ partial "header/header.html" . }}
-
-
-{{ end }}
+{{ end }}
\ No newline at end of file
diff --git a/layouts/docs/list.html b/layouts/docs/list.html
index 87964863..ea3ed6df 100644
--- a/layouts/docs/list.html
+++ b/layouts/docs/list.html
@@ -1,43 +1,22 @@
{{ define "main" }}
-
-
-
+
+
+
+
{{ if eq .CurrentSection .FirstSection }}{{ .Section | humanize }}{{ else }}{{ .Title }}{{ end }}
+
{{ .Content }}
+
+ {{ $currentSection := .CurrentSection }}
+ {{ range where .Site.RegularPages.ByTitle "Section" .Section }}
+ {{ if in (.RelPermalink | string) $currentSection.RelPermalink }}
+
fullstackhero is in it's early development stages.
+
+
fullstackhero
+
{{ .Params.sub }}đ
+
+
What's fullstackhero?
+
Ever gone through the pain of setting up new Project from scratch each and every time? fullstackhero aims to
+ address this pain point by offering Starting Points aka Boilerplates for various technologies that can help
+ save
+ over 200+ hours of Development and Research Time for Developers and Teams.
+
fullstackhero offers Boilerplates with latest packages and services that your projects will ever need. We
+ intend to provide Clean and Well structured Boilerplates with top-notch quality following standard coding
+ practices and Clean Architecture principles that makes your development experience seemless.
+
+
Most importantly, fullstackhero is completely FREE to use! đ
{{ end }}
{{ define "sidebar-prefooter" }}
+{{ if eq $.Site.Language.LanguageName "English" }}
+
+
+
+
Benefits of fullstackherođĨ
+
Here are few of the many reasons on why you should be excited about fullstackhero.
+
+
+
+
+
Production Ready API
+
Get to work with the latest and greatest of Microsoft's .NET 7 Web API fused with the goodness of
+ fullstackhero.
+
+
+
Premium Client Applications
+
Blazor WebAssembly is the currently offered Boilerplate for fullstackhero's client side. Angular , React
+ and MVC on the way!
+
+
+
Multitenancy Support
+
Get a taste of the built-in Multitenancy feature integrated with the help of Finbuckle Multitenancy.
+
+
+
+
+
SOLID Architecture
+
fullstackhero is built with Scalability and Readabilty in mind. The source code is well structured and
+ easy to understand.
+
+
+
Well Documented
+
Compherensive documentation and jump start tutorials are available to keep you familiar with
+ fullstackhero.
+
+
+
Completely FREE!
+
The project is actively developed on GitHub under MIT licence and is open for contributions.
+
+
+
+
Clean Seperation
+
API and Client Projects are seperated into various GitHub repositories to ensure that there is no dependency between the APIs and Client Applications. This enables us to accomodate various new technologies as both client and API applications in the future.
+
+
+
+
+
+
-
Key Features
-
Use sensible defaults for structured data, open graph, and Twitter cards. Or easily change the SEO settings
- to your liking.
+
fullstackhero Projects
+
It's important to understand that fullstackhero provides seperate boilerplates for both API and Client Applications. These can be of various technologies and can be found in various repositories under the @fullstackhero handle on github!
-
-
-
-
Clean Architecture
- fullstackhero follows Clean Architecture principles to keep the project highly
- scalable in nature.
-
-
-
Fast by default âĄī¸
-
Get 100 scores on Google
- Lighthouse by default. Doks removes unused css, prefetches links, and lazy loads images.
-
-
-
Multitenancy Support
-
Out of the box Multitenancy support with Single Database per Tenant and Shared Database for Multiple Tenant
- Approaches.
+
+
+
+
+
.NET 7 Web API Boilerplate đ
+
+
server
+
dotnet
+
multitenancy
+
aws
+
docker
+
+
Get to work with the latest and greatest of Microsoft's .NET 7 Web API fused with the goodness of
+ fullstackhero.