Starts in:
0 DAY
19 HRS
27 MIN
56 SEC
Starts in:
0 D
19 H
27 M
56 S

There are multiple versions of this document. Pick the options that suit you best.

UI
Database
Tiered

Getting started

This tutorial explains how to create a new ASP.NET Core MVC web application using the startup template, configure and run it.

Setup your development environment

First things first! Let's setup your development environment before creating the first project.

Pre-requirements

The following tools should be installed on your development machine:

You can use another editor instead of Visual Studio as long as it supports .NET Core and ASP.NET Core.

Install the ABP CLI

ABP CLI is a command line interface that is used to authenticate and automate some tasks for ABP based applications.

ABP CLI is a free & open source tool for the ABP framework.

First, you need to install the ABP CLI using the following command:

dotnet tool install -g Volo.Abp.Cli

If you've already installed, you can update it using the following command:

dotnet tool update -g Volo.Abp.Cli

Create a new project

This document assumes that you prefer to use MVC / Razor Pages as the UI framework and MongoDB as the database provider. For other options, please change the preference on top of this document.

Using the ABP CLI to create a new project

Use the new command of the ABP CLI to create a new project:

abp new Acme.BookStore -t app -d mongodb --tiered 
  • -t argument specifies the startup template name. app is the startup template that contains the essential ABP Modules pre-installed and configured for you.

  • -d argument specifies the database provider, mongodb in this case.

  • --tiered argument is used to create N-tiered solution where authentication server, UI and API layers are physically separated.

You can use different level of namespaces; e.g. BookStore, Acme.BookStore or Acme.Retail.BookStore.

ABP CLI commands & options

ABP CLI document covers all of the available commands and options for the ABP CLI. See the ABP Startup Templates document for other templates.

The solution structure

After creating your project, you will have the following solution folders & files:

You will see the following solution structure when you open the .sln file in the Visual Studio:

vs-default-app-solution-structure

About the projects in your solution

Your solution may have slightly different structure based on your UI, database and other preferences.

The solution has a layered structure (based on Domain Driven Design) and also contains unit & integration test projects.

Integration tests projects are properly configured to work with in-memory MongoDB database created per test (used Mongo2Go library).

See the application template document to understand the solution structure in details.

Create the database

Database connection string

Check the connection string in the appsettings.json file under the .IdentityServer and .HttpApi.Host projects:

"ConnectionStrings": {
  "Default": "mongodb://localhost:27017/BookStore"
}

The solution is configured to use MongoDB in your local computer, so you need to have a MongoDB server instance up and running or change the connection string to another MongoDB server.

Seed initial data

The solution comes with a .DbMigrator console application which seeds the initial data. It is useful on development as well as on production environment.

.DbMigrator project has its own appsettings.json. So, if you have changed the connection string above, you should also change this one.

Right click to the .DbMigrator project and select Set as StartUp Project

set-as-startup-project

Hit F5 (or Ctrl+F5) to run the application. It will have an output like shown below:

db-migrator-output

Initial seed data creates the admin user in the database which is then used to login to the application. So, you need to use .DbMigrator at least once for a new database.

Run the application

Ensure that the .IdentityServer project is the startup project. Run the application which will open a login page in your browser.

Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.

You can login, but you cannot enter to the main application here. This is just the authentication server.

Ensure that the .HttpApi.Host project is the startup project and run the application which will open a Swagger UI in your browser.

swagger-ui

This is the API application that is used by the web application.

Lastly, ensure that the .Web project is the startup project and run the application which will open a welcome page in your browser

mvc-tiered-app-home

Click to the login button which will redirect you to the Identity Server to login to the application:

bookstore-login

Enter admin as the username and 1q2w3E* as the password to login to the application:

bookstore-home

The application is up and running. You can start developing your application based on this startup template.

Mobile Development

ABP platform provide React Native template to develop mobile applications.

The solution includes the React Native application in the react-native folder as default. If you don't plan to develop a mobile application with React Native, you can ignore this step and delete the react-native folder.

The React Native application running on an Android emulator or a physical phone cannot connect to the backend on localhost. To fix this problem, it is necessary to run backend on the local IP.

React Native tiered project local IP entry

  • Open the appsettings.json in the .IdentityServer folder. Replace the localhost address on the SelfUrl property with your local IP address.
  • Open the launchSettings.json in the .IdentityServer/Properties folder. Replace the localhost address on the applicationUrl properties with your local IP address.
  • Open the appsettings.json in the .HttpApi.Host folder. Replace the localhost address on the Authority property with your local IP address.
  • Open the launchSettings.json in the .HttpApi.Host/Properties folder. Replace the localhost address on the applicationUrl properties with your local IP address.

Run the backend as described in the Running the HTTP API Host (server-side) section.

React Native application does not trust the auto-generated .NET HTTPS certificate, you should use the HTTP during development.

Go to the react-native folder, open a command line terminal, type the yarn command (we suggest to the yarn package manager while npm install will also work in most cases):

yarn
  • Open the Environment.js in the react-native folder and replace the localhost address on the apiUrl and issuer properties with your local IP address as shown below:

react native environment local IP

Make sure that issuer matches the running address of the .IdentityServer project, apiUrl matches the running address of the .HttpApi.Host project.

Once all node modules are loaded, execute yarn start (or npm start) command:

yarn start

Wait Expo CLI to start. Expo CLI opens the management interface on the http://localhost:19002/ address.

expo-interface

In the above management interface, you can start the application with an Android emulator, an iOS simulator or a physical phone by the scan the QR code with the Expo Client.

See the Android Studio Emulator, iOS Simulator documents on expo.io.

React Native login screen on iPhone 11

Enter admin as the username and 1q2w3E* as the password to login to the application.

The application is up and running. You can continue to develop your application based on this startup template.

The application startup template includes the TenantManagement and Identity modules.

What's next?

Application development tutorial

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

In this document
Community Talks

What’s New with .NET 9 & ABP 9?

21 Nov, 17:00
Online
Watch the Event
Mastering ABP Framework Book
Mastering ABP Framework

This book will help you gain a complete understanding of the framework and modern web application development techniques.

Learn More