A full-stack .NET microservices build on Dapr and Tye
See the codeCoolStore Website is a containerised microservices application consisting of services based on .NET Core running on Dapr. It demonstrates how to wire up small microservices into a larger application using microservice architectural principals.
This repository based on some of the old libraries. So be careful if you use it in your production environment!!!
We are working on practical-clean-ddd for the new version of building the .NET apps with domain-driven design, clean architecture with Docker, Kubernetes, Tye, and Dapr in a practical way 👍
Read documentation for more information.
The business domain is inspired from CoolStore project by JBoss Demo Central and Red Hat Demo Central.
Check out my medium, or my dev.to or say hi on Twitter!

| Name | Usecase | Apps Participants |
|---|---|---|
| Service-to-service invocation |
- User clicks to the detail product - Populate product information for shopping cart items - Order gets detail information of buyer | productcatalogapp, inventoryapp, shoppingcartapp, identityapp |
| State management | Items in the shopping cart | shoppingcartapp |
| Publish and subscribe | User clicks checkout button, and the checkout process happens. It triggers the pub/sub flow in the system | shoppingcartapp, saleapp, identityapp |
| Resource bindings | Every 30 seconds and 1 minutes the validation process happens. It will change the status of order from Received to Process and Complete via Cron binding | productcatalogapp, inventoryapp |
| Observability | All apps in the application are injected by daprd so that it's tracked and observed by dapr | identityapp, webapigatewayapp, inventoryapp, productcatalogapp, shoppingcartapp, saleapp, web |
| Secrets | Bind with local secret file to hide password of redis | inventoryapp, productcatalogapp, shoppingcartapp, saleapp |
| Actors | N/A | N/A |



Make sure you have dapr and tye installed on your machine!
$ tye run
Go to http://localhost:8000, and you're able to access to several endpoints whenevever it's ready as below:
http://localhost:3000http://localhost:5000http://localhost:5001$ tye run tye.slim.yaml
$ dapr run --app-port 5001 --app-id identityapp dotnet run -- -p src\Services\Identity\IdentityService\IdentityService.csproj
$ dapr run --app-port 5002 --app-id inventoryapp dotnet run -- -p src\Services\Inventory\InventoryService.Api\InventoryService.Api.csproj
$ dapr run --app-port 5003 --app-id productcatalogapp dotnet run -- -p src\Services\ProductCatalog\ProductCatalogService.Api\ProductCatalogService.Api.csproj
$ dapr run --app-port 5004 --app-id shoppingcartapp dotnet run -- -p src\Services\ShoppingCart\ShoppingCartService.Api\ShoppingCartService.Api.csproj
Now, you can start to develop, debug or explore more about dapr with tye via Coolstore Apps.
Enable
vm.max_map_countfor ElasticSearch via runsysctl -w vm.max_map_count=262144
Windows 10 - The OS for developing and building this demo application.WSL2 - Ubuntu OS - the subsystem that helps to run easily the bash shell on Windows OSDocker for desktop (Kubernetes enabled) - The easiest tool to run Docker, Docker Swarm and Kubernetes on Mac and WindowsKubernetes / AKS - The app is designed to run on Kubernetes (both locally on "Docker for Desktop" as well as on the cloud with AKS)helm - Best package manager to find, share, and use software built for Kubernetesdapr - An event-driven, portable runtime for building microservices on cloud and edgetye - A developer tool that makes developing, testing, and deploying microservices and distributed applications easier.NET Core 5 - .NET Framework and .NET Core, including ASP.NET and ASP.NET CoreIdentityServer4 - Identity and Access Control solution for .NET CoreYARP - A toolkit for developing high-performance HTTP reverse proxy applicationsFluentValidation - Popular .NET validation library for building strongly-typed validation rulesMediatR - Simple, unambitious mediator implementation in .NETEF Core - Modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrationsScrutor - Assembly scanning and decoration extensions for Microsoft.Extensions.DependencyInjectionserilog - Simple .NET logging with fully-structured eventsNEST - Elasticsearch.Net & NESTnodejs 10.x - JavaScript runtime built on Chrome's V8 JavaScript enginetypescript - A typed superset of JavaScript that compiles to plain JavaScriptcreate-react-app - A modern web app by running one commandGuidance for developing µService can be found at Clean Domain-Driven Design in 10 minutes

TraceId, HandlerName, RequestPath, level and filter with HandlerName
Then, you can find the exception happend in code via Kibana dashboard with settings above. Grab the TraceId, then paste it to Zipkin dashboard, then you can see the tracing of this request as the following picture

git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-featureThanks goes to these wonderful people (emoji key)
Code released under the MIT license.
499 followers · starred Sep 2018
88 followers · starred Sep 2018
4 followers · starred Feb 2023
116 followers · starred Mar 2019
A full-stack .NET microservices build on Dapr and Tye
See the codeCoolStore Website is a containerised microservices application consisting of services based on .NET Core running on Dapr. It demonstrates how to wire up small microservices into a larger application using microservice architectural principals.
This repository based on some of the old libraries. So be careful if you use it in your production environment!!!
We are working on practical-clean-ddd for the new version of building the .NET apps with domain-driven design, clean architecture with Docker, Kubernetes, Tye, and Dapr in a practical way 👍
Read documentation for more information.
The business domain is inspired from CoolStore project by JBoss Demo Central and Red Hat Demo Central.
Check out my medium, or my dev.to or say hi on Twitter!

| Name | Usecase | Apps Participants |
|---|---|---|
| Service-to-service invocation |
- User clicks to the detail product - Populate product information for shopping cart items - Order gets detail information of buyer | productcatalogapp, inventoryapp, shoppingcartapp, identityapp |
| State management | Items in the shopping cart | shoppingcartapp |
| Publish and subscribe | User clicks checkout button, and the checkout process happens. It triggers the pub/sub flow in the system | shoppingcartapp, saleapp, identityapp |
| Resource bindings | Every 30 seconds and 1 minutes the validation process happens. It will change the status of order from Received to Process and Complete via Cron binding | productcatalogapp, inventoryapp |
| Observability | All apps in the application are injected by daprd so that it's tracked and observed by dapr | identityapp, webapigatewayapp, inventoryapp, productcatalogapp, shoppingcartapp, saleapp, web |
| Secrets | Bind with local secret file to hide password of redis | inventoryapp, productcatalogapp, shoppingcartapp, saleapp |
| Actors | N/A | N/A |



Make sure you have dapr and tye installed on your machine!
$ tye run
Go to http://localhost:8000, and you're able to access to several endpoints whenevever it's ready as below:
http://localhost:3000http://localhost:5000http://localhost:5001$ tye run tye.slim.yaml
$ dapr run --app-port 5001 --app-id identityapp dotnet run -- -p src\Services\Identity\IdentityService\IdentityService.csproj
$ dapr run --app-port 5002 --app-id inventoryapp dotnet run -- -p src\Services\Inventory\InventoryService.Api\InventoryService.Api.csproj
$ dapr run --app-port 5003 --app-id productcatalogapp dotnet run -- -p src\Services\ProductCatalog\ProductCatalogService.Api\ProductCatalogService.Api.csproj
$ dapr run --app-port 5004 --app-id shoppingcartapp dotnet run -- -p src\Services\ShoppingCart\ShoppingCartService.Api\ShoppingCartService.Api.csproj
Now, you can start to develop, debug or explore more about dapr with tye via Coolstore Apps.
Enable
vm.max_map_countfor ElasticSearch via runsysctl -w vm.max_map_count=262144
Windows 10 - The OS for developing and building this demo application.WSL2 - Ubuntu OS - the subsystem that helps to run easily the bash shell on Windows OSDocker for desktop (Kubernetes enabled) - The easiest tool to run Docker, Docker Swarm and Kubernetes on Mac and WindowsKubernetes / AKS - The app is designed to run on Kubernetes (both locally on "Docker for Desktop" as well as on the cloud with AKS)helm - Best package manager to find, share, and use software built for Kubernetesdapr - An event-driven, portable runtime for building microservices on cloud and edgetye - A developer tool that makes developing, testing, and deploying microservices and distributed applications easier.NET Core 5 - .NET Framework and .NET Core, including ASP.NET and ASP.NET CoreIdentityServer4 - Identity and Access Control solution for .NET CoreYARP - A toolkit for developing high-performance HTTP reverse proxy applicationsFluentValidation - Popular .NET validation library for building strongly-typed validation rulesMediatR - Simple, unambitious mediator implementation in .NETEF Core - Modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrationsScrutor - Assembly scanning and decoration extensions for Microsoft.Extensions.DependencyInjectionserilog - Simple .NET logging with fully-structured eventsNEST - Elasticsearch.Net & NESTnodejs 10.x - JavaScript runtime built on Chrome's V8 JavaScript enginetypescript - A typed superset of JavaScript that compiles to plain JavaScriptcreate-react-app - A modern web app by running one commandGuidance for developing µService can be found at Clean Domain-Driven Design in 10 minutes

TraceId, HandlerName, RequestPath, level and filter with HandlerName
Then, you can find the exception happend in code via Kibana dashboard with settings above. Grab the TraceId, then paste it to Zipkin dashboard, then you can see the tracing of this request as the following picture

git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-featureThanks goes to these wonderful people (emoji key)
Code released under the MIT license.
499 followers · starred Sep 2018
88 followers · starred Sep 2018
4 followers · starred Feb 2023
116 followers · starred Mar 2019