Sample implementation of the Clean Architecture Principles with .NET Core. Use cases as central organizing structure, decoupled from frameworks and technology details. Built by small components that are developed and tested in isolation.
We maintain two versions:
- Latest .NET Core 3.1 release - Check the .NET Core SDK on
global.json
. - .NET 5 - Experimental features and .NET 5.
Hit the
WATCH
button to get the latest Clean Architecture updates.
Manga is a Virtual Wallet software in which the customer register an account then manage the balance by Deposits
, Withdraws
and Transfers
.
The Web API's demo is hosted on Azure servers and there's a beautiful Swagger Client available.
We also support the React client:
Run the Docker container in less than 2 minutes using Play With Docker:
Run the following commands:
Startup the whole solution:
cd .docker
./makecert.sh
./trustcert-mac.sh
#./trustcert-windows.sh
./startup.sh
Then the following containers should be running docker ps
:
Application | Port | URL |
---|---|---|
NGINX | 80/443 | https://wallet.local |
Wallet SPA | 80/443 | https://wallet.local |
Accounts API | 80/443 | https://wallet.local/accounts-api |
Identity Server | 80/443 | https://wallet.local/identity-server |
SQL Server | 1433 |
Browse to https://wallet.local
then click on Log In. Trust the self-signed certificate.
If you prefer dotnet commands then start each service individually:
Expand to get the dotnet run steps.
dotnet dev-certs https --clean
dotnet dev-certs https -ep $env:USERPROFILE\.aspnet\https\aspnetapp.pfx -p MyCertificatePassword
dotnet dev-certs https --trust
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2019-latest
dotnet tool update --global dotnet-ef --version 3.1.6
dotnet ef database update --project accounts-api/src/Infrastructure --startup-project accounts-api/src/WebApi
dotnet run --project identity-server/src/IdentityServer.csproj
dotnet run --project accounts-api/src/WebApi/WebApi.csproj
pushd wallet-spa/src/ClientApp
npm install
popd
dotnet run --project wallet-spa/src/WalletSPA.csproj --launch-profile WalletSPA
Learn how to design modular applications.
Explore the .NET Core features.
Learning how to design modular applications will help you become a better engineer. Designing modular applications is the holy grail of software architecture, it is hard to find engineers experienced on designing applications which allows adding new features in a steady speed.
.NET Core brings a sweet development environment, an extensible and cross-platform framework. We will explore the benefits of it in the infrastructure layer and we will reduce its importance in the application and domain layers. The same rule is applied for modern C# language syntax.
This is continually updated, open source project.
Contributions are welcome!
Learn from the community.
Feel free to submit pull requests to help:
- Fix errors.
- Refactoring.
- Build the Front End.
- Submit issues and bugs.
The Discussão em Português is pinned for the large community of brazillian developers.
- Single Responsibility Principle
- Open-Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Swagger and API Versioning
- Microsoft Extensions
- Feature Flags
- Logging
- Data Annotations
- Authentication
- Authorization
- Running the Application Locally
- Running the Tests Locally
- Continuous Integration & Continuous Deployment
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Hit the
FORK
button and show Clean Architecture on your profile.