An Implementation of Clean Architecture with ASP.NET Core 3.1 WebApi. With this Open-Source BoilerPlate Template, you will get access to the world of Loosely-Coupled and Inverted-Dependency Architecture in ASP.NET Core 3.1 WebApi with a lot of best practices.
Check out the Project Page to learn more about this Open Source Project.
Read the Changelog file to see the new changes.
I am no longer supporting this project. No more new features will be added to this repository. I am building a .NET WebApi 6.0 Clean Architecture Boilerplate Project with better features and Multitenancy ofcourse! Visit the new project - https://github.com/fullstackhero/dotnet-webapi-boilerplate
This is the first pre-release version of the fullstackhero .NET WebAPI Boilerplate
package. Newer versions will be available on a weekly basis with newer updates and patches. Read the getting-started guide for more.
The Release Version is expected to be out by Novemeber, 2021 as soon as .NET 6 LTS is launched by Microsoft. Preview versions of this project is available for Initial Developer Testing.
[Documentation] Overview - Read
[Documentation] Getting Started - Read
[Documentation] Development Environment - Learn about setting up the DEV environment
Track Progress - Release 1.0 Milestones
Participate in Discussions - QNA & General Discussions
Join our Discord - fullstackhero @ Discord
v1.1 - Stable Release - Download the Stable Release
v1.0-preview - Download the first Preview here
Follow these steps to get started with this Boiler Plate Template.
Make sure Visual Studio 2019 is installed on your machine with the latest SDK. Download from Visual Studio Marketplace. Install it on your machine.
Follow these Steps to get started.
You Solution Template is Ready!
Visit the Project Page to learn more - Click Here
Check out my blog or say Hi on Twitter!
The Project currently uses MSSQL as the default Data Provider. If you are more comfortable with MySQL or PostgreSQL, here is how to migrate to them easily.
delete all existing file inside migrations folder on both project
In in ServiceExtensions.cs
and ServiceRegistration.cs
change from options.UseSqlServer
to:
options.UseMySql
options.UseNpgsql
Add NuGet packages to both projects (Infrastructure.Identity and Infrastructure.Persistence):
run dotnet add package Pomelo.EntityFrameworkCore.MySql --version 3.1.2
(remember to do this on both projects)
run
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL.Design
(remember to do this on both projects)
on IdentityContext.cs
comment builder.HasDefaultSchema("Identity");
because ef doesn't support that on mysql
cd to {YourProjectName}.Infrastructure.Identity
and run
dotnet ef database update --startup-project ../{YourProjectName}.WebApi/{YourProjectName}.WebApi.csproj -c "IdentityContext"
dotnet ef migrations add Initial --startup-project ../{YourProjectName}.WebApi/{YourProjectName}.WebApi.csproj -c "IdentityContext"
cd to {YourProjectName}.Infrastructure.Persistence
and run
dotnet ef database update --startup-project ../{YourProjectName}.WebApi/{YourProjectName}.WebApi.csproj -c "ApplicationDbContext"
dotnet ef migrations add Initial --startup-project ../{YourProjectName}.WebApi/{YourProjectName}.WebApi.csproj -c "ApplicationDbContext"
The above guide (To use MySQL) was contributed by geekz-reno.
As soon you build and run your application, default users and roles get added to the database.
Default Roles are as follows.
Here are the credentials for the default users.
You can use these default credentials to generate valid JWTokens at the ../api/account/authenticate endpoint.
Does it really make sense to Setup your ASP.NET Core Solution everytime you start a new WebApi Project ? Aren't we wasting quite a lot of time in doing this over and over gain?
This is the exact Problem that I intend to solve with this Full-Fledged ASP.NET Core 3.1 WebApi Solution Template, that also follows various principles of Clean Architecture.
The primary goal is to create a Full-Fledged implementation, that is well documented along with the steps taken to build this Solution from Scratch. This Solution Template will also be available within Visual Studio 2019 (by installing the required Nuget Package / Extension).
If you found this Implementation helpful or used it in your Projects, do give it a star. Thanks! Or, If you are feeling really generous, Support the Project with a small contribution!
Every changes / additions / deletions will be recorded in the Changelog file.
Having any issues or troubles getting started? Get in touch with me or Raise a Bug or Feature Request. Always happy to help.
Has this Project helped you learn something New? or Helped you at work? Do Consider Supporting.
I have personally not come across a clean implementation on a WebAPI, which is the reason that I started building this up. There are quite a lot of improvements and fixes along the way from the day I started out. Thanks to the community for the support and suggestions. Please share this Repository within your developer community, if you think that this would a difference! Thanks.
iammukeshm/CleanArchitecture.WebApi Project is licensed with the MIT License.