This repository contains .NET application solution for AKQA .NET Tech Challenge built using ASP.NET Core, WebApi and Entity Framework Core. The architecture and design of the project are based on very popular 'Clean Architecture' which is very well explained in the following links:
- The Clean Architecture
- Common web application architectures by Microsoft
- Architect Modern Web Applications with ASP.NET Core by Microsoft
The different projects created as part of Clean Architecture under this repository contains a ReadMe.md file for further information.
Use these instructions to get the project up and running:
You will need the following tools:
Follow these steps to get your development environment set up:
-
Clone the repository
-
Open the
AKQA.sln
solution in Visual Studio 2017 -
Restore the nuget packages and build the solution
-
Next, under
Web
directory, right-click onAKQA.Api
project and select 'Set as StartUp Project'. Hit play button (with IIS Express) on Visual Studio to launch the AKQA Web Api. It will display the Swagger UI of AKQA Web Api (which can also be used to test the API endpoints). Note: This step is required only for the first time to launch/host the WebApi in IIS Express. -
Once the AKQA.Api has started, within the
Web
directory, Now setAKQA.Web
as StartUp Project and launch it using Visual Studio. It will display the AKQA Home page. -
Later, you can also launch https://localhost:44324/ in your browser to view the Web UI
-
Launch https://localhost:44343/swagger in your browser to view the API
-
The
AKQA.Web
project callsAKQA.Api
usingsite.js
. If IIS Express allocates different port number to localhost in your machine, please configure the API URL undersite.js
. This is just for dev setup and should be moved to appsettings configuration in PROD environment with WebAPI hosted. -
One Assumption made: Customer data should also persist or stored in the system. On application start, it uses SQL local DB ((localdb)\mssqllocaldb) provided by Visual Studio.
-
The
Tests
directory contains Application unit and Integration Test Cases. You can use Visual Studio (Test -> Run -> All Tests) feature to execute the tests.
- .NET Core 2.1
- ASP.NET Core 2.1
- Entity Framework Core 2.1
- xunit
- Moq
- MediatR with Command Design Pattern
- FluentValidation
- Swashbuckle.Core - Swagger for WebApi
- Humanizer
- Encryption for Customer PII Data
- Caching
- Security (e.g. Anti-Forgery, Authentication, CORS etc.)
- Client-side Validation using UI Framework (e.g. jQuery, Angular etc.)