Newsletter Application
- src: This folder contains all projects and the solution
 - tests: Contains unit test projects
 - scripts: contains docker and any needed powershell, sh or bat files.
 
- Onion Architecture + Taking some benefits of DDD like using Specification pattern
 - UI: MVC
 - App Architecture: Domain Centeric (Onion)
 - Repository Pattern for data access
 - Specification Pattern for filteration
 
- ASP.NET Core (Taking benfits of performance, EF Core Code First Localization, DI, OWIN Middlewares)
 - Localdb as portable database solution (can be changed from connectionstring)
 - XUNIT, MOQ, FluentAssertions for Unit Tests
 - AutoMapper for Mapping ViewModels to Models and Vice Versa
 - Docker
 - Travis CI for continous Integration
 
- App should run without any issue on IIS or IIS Express
 - Make sure to run with VisualStudio 2017 or from command line (.NET Core Runtime should be installed)
 - Once the app run, it seed admin user and role to use it as admin (Can be changed from configurations)
 
- Make sure to have Visual Studio that supports .Net Core.
 - Make sure that the .Net Core 2 runtime installed.
 - open solution from src folder.
 - Make sure to mark Presentation > Greenfinch.Newsletter.Web.MVC as Startup project
 - Restore Nuget Packages
 - Select the EntityFramework project from Nuget Package Manager then Update-Database to update the database from code and seed needed data (You may need to change connectionstring from appsettings and appsettings.development based on your prefrances)
 - Run with IISExpress or IIS
 - Note: If you wish you can use dotnet core command line commands to run the project.
 
- I Used Travis CI for CI
 - Also project prepared to be deployed correctly on Docker (Only there are a missing orchstration step in scripts/docker-compose.yml which need to add a docker image for nanoserver or sqlserver and adjust the network configuration between the dotnet core app docker and the sql docker)