You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/templates/app/aspnet-core/README.md

154 lines
8.7 KiB

# MyCompanyName.MyProjectName
## About this solution
This is a layered startup solution based on [Domain Driven Design (DDD)](https://docs.abp.io/en/abp/latest/Domain-Driven-Design) practises. All the fundamental ABP modules are already installed.
### Pre-requirements
* [.NET 7.0+ SDK](https://dotnet.microsoft.com/download/dotnet)
* [Node v18 or 20](https://nodejs.org/en)
<TEMPLATE-REMOVE IF-NOT='TIERED'>
* [Redis](https://redis.io/)
</TEMPLATE-REMOVE>
### Configurations
The solution comes with a default configuration that works out of the box. However, you may consider to change the following configuration before running your solution:
<TEMPLATE-REMOVE IF-NOT='TIERED'>
* Check the `ConnectionStrings` in `appsettings.json` files under the `MyCompanyName.MyProjectName.AuthServer`, `MyCompanyName.MyProjectName.HttpApi.Host` and `MyCompanyName.MyProjectName.DbMigrator` projects and change it if you need.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF='TIERED'>
<TEMPLATE-REMOVE IF-NOT='ui:mvc'>
* Check the `ConnectionStrings` in `appsettings.json` files under the `MyCompanyName.MyProjectName.Web` and `MyCompanyName.MyProjectName.DbMigrator` projects and change it if you need.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor-server'>
* Check the `ConnectionStrings` in `appsettings.json` files under the `MyCompanyName.MyProjectName.Blazor` and `MyCompanyName.MyProjectName.DbMigrator` projects and change it if you need.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor'>
* Check the `ConnectionStrings` in `appsettings.json` files under the `MyCompanyName.MyProjectName.HttpApi.Host` and `MyCompanyName.MyProjectName.DbMigrator` projects and change it if you need.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:angular'>
* Check the `ConnectionStrings` in `appsettings.json` files under the `MyCompanyName.MyProjectName.HttpApi.Host` and `MyCompanyName.MyProjectName.DbMigrator` projects and change it if you need.
</TEMPLATE-REMOVE>
</TEMPLATE-REMOVE>
### Before running the application
#### Generating a Signing Certificate
In the production environment, you need to use a production signing certificate. ABP Framework sets up signing and encryption certificates in your application and expects an `openiddict.pfx` file in your application.
This certificate is already generated by ABP CLI, so most of the time you don't need to generate it yourself. However, if you need to generate a certificate, you can use the following command:
```bash
dotnet dev-certs https -v -ep openiddict.pfx -p 00000000-0000-0000-0000-000000000000
```
> `00000000-0000-0000-0000-000000000000` is the password of the certificate, you can change it to any password you want.
It is recommended to use **two** RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing.
For more information, please refer to: https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios
> Also, see the [Configuring OpenIddict](https://docs.abp.io/en/abp/latest/Deployment/Configuring-OpenIddict#production-environment) documentation for more information.
#### Install Client-Side Libraries
Run the following command in the directory of your final application:
```bash
abp install-libs
```
> This command installs all NPM packages for MVC/Razor Pages and Blazor Server UIs and this command is already run by the ABP CLI, so most of the time you don't need to run this command manually.
### Deploying the Application
Deploying an ABP application is not different than deploying any .NET or ASP.NET Core application. However, there are some topics that you should care about when you are deploying your applications. You can check ABP's [Deployment documentation](https://docs.abp.io/en/abp/latest/Deployment/Index) before deploying your application.
* Run `abp install-libs` command on your solution folder to install client-side package dependencies. This step is automatically done when you create a new solution with ABP CLI. However, you should run it yourself if you have first cloned this solution from your source control, or added a new client-side package dependency to your solution.
* Run `MyCompanyName.MyProjectName.DbMigrator` to create the initial database. This should be done in the first run. It is also needed if a new database migration is added to the solution later.
### Solution structure
This is a layered monolith application that consists of the following applications:
* `MyCompanyName.MyProjectName.DbMigrator`: A console application which applies the migrations and also seeds the initial data. It is useful on development as well as on production environment.
<TEMPLATE-REMOVE IF-NOT='TIERED'>
* `MyCompanyName.MyProjectName.AuthServer`: ASP.NET Core MVC / Razor Pages application that is integrated OAuth 2.0(`OpenIddict`) and account modules. It is used to authenticate users and issue tokens.
* `MyCompanyName.MyProjectName.HttpApi.Host`: ASP.NET Core API application that is used to expose the APIs to the clients.
<TEMPLATE-REMOVE IF-NOT='ui:mvc'>
* `MyCompanyName.MyProjectName.Web`: ASP.NET Core MVC / Razor Pages application that is the essential web application of the solution.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor-server'>
* `MyCompanyName.MyProjectName.Blazor`: ASP.NET Core Blazor Server application that is the essential web application of the solution.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor'>
* `MyCompanyName.MyProjectName.Blazor`: ASP.NET Core Blazor WASM application that is a single page application that runs on the browser.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:angular'>
* `angular`: Angular application.
</TEMPLATE-REMOVE>
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF='TIERED'>
<TEMPLATE-REMOVE IF-NOT='ui:mvc'>
* `MyCompanyName.MyProjectName.Web`: ASP.NET Core MVC / Razor Pages application that is the essential web application of the solution.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor-server'>
* `MyCompanyName.MyProjectName.Blazor`: ASP.NET Core Blazor Server application that is the essential web application of the solution.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor'>
* `MyCompanyName.MyProjectName.HttpApi.Host`: ASP.NET Core API application that is used to expose the APIs to the clients.
* `MyCompanyName.MyProjectName.Blazor`: ASP.NET Core Blazor Server application that is the essential web application of the solution.
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:angular'>
* `MyCompanyName.MyProjectName.HttpApi.Host`: ASP.NET Core API application that is used to expose the APIs to the clients.
* `angular`: Angular application.
</TEMPLATE-REMOVE>
</TEMPLATE-REMOVE>
### Deploying the application
Deploying an ABP application is not different than deploying any .NET or ASP.NET Core application. However, there are some topics that you should care about when you are deploying your applications. You can check ABP's [Deployment documentation](https://docs.abp.io/en/abp/latest/Deployment/Index) before deploying your application.
### Additional resources
You can see the following resources to learn more about your solution and the ABP Framework:
* [Web Application Development Tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1)
* [Application Startup Template Structure](https://docs.abp.io/en/abp/latest/Startup-Templates/Application)
<TEMPLATE-REMOVE IF-NOT='ui:mvc'>
<TEMPLATE-REMOVE IF-NOT='BASIC'>
* [ASP.NET Core MVC / Razor Pages: The Basic Theme](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Basic-Theme)
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='LEPTONXLITE'>
* [LeptonX Lite MVC UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/AspNetCore)
</TEMPLATE-REMOVE>
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor-server'>
<TEMPLATE-REMOVE IF-NOT='BASIC'>
* [Blazor UI: Basic Theme](https://docs.abp.io/en/abp/latest/UI/Blazor/Basic-Theme?UI=BlazorServer)
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='LEPTONXLITE'>
* [LeptonX Lite Blazor UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/Blazor?UI=BlazorServer)
</TEMPLATE-REMOVE>
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:blazor'>
<TEMPLATE-REMOVE IF-NOT='BASIC'>
* [Blazor UI: Basic Theme](https://docs.abp.io/en/abp/latest/UI/Blazor/Basic-Theme?UI=Blazor)
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='LEPTONXLITE'>
* [LeptonX Lite Blazor UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/Blazor?UI=Blazor)
</TEMPLATE-REMOVE>
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='ui:angular'>
<TEMPLATE-REMOVE IF-NOT='BASIC'>
* [Angular UI: Basic Theme](https://docs.abp.io/en/abp/latest/UI/Angular/Basic-Theme)
</TEMPLATE-REMOVE>
<TEMPLATE-REMOVE IF-NOT='LEPTONXLITE'>
* [LeptonX Lite Angular UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/Angular)
</TEMPLATE-REMOVE>
</TEMPLATE-REMOVE>