All Projects → vietnam-devs → Coolstore Microservices

vietnam-devs / Coolstore Microservices

Licence: mit
A full-stack .NET microservices build on Dapr and Tye

Programming Languages

typescript
32286 projects
C#
18002 projects
HTML
75241 projects
shell
77523 projects
powershell
5483 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to Coolstore Microservices

Modernarchitectureshop
The Microservices Online Shop is an application with a modern software architecture that is cleanly designed and based on.NET lightweight technologies. The shop has two build variations. The first variant is the classic Microservices Architectural Style. The second one is with Dapr. Dapr has a comprehensive infrastructure for building highly decoupled Microservices; for this reason, I am using Dapr to achieve the noble goal of building a highly scalable application with clean architecture and clean code.
Stars: ✭ 154 (-91.91%)
Mutual labels:  microservices, grpc, redis, dotnet-core, clean-architecture, microservices-architecture
Grpcjsontranscoder
A filter which allows a RESTful JSON API client to send requests to .NET web server over HTTP and get proxied to a gRPC service
Stars: ✭ 97 (-94.9%)
Mutual labels:  rest-api, microservices, grpc, cloud-native, dotnet-core, microservices-architecture
Netcorekit
💗 A crafted toolkit for building cloud-native apps on the .NET platform
Stars: ✭ 248 (-86.97%)
Mutual labels:  grpc, cloud-native, dotnet-core, clean-architecture, ddd, microservices-architecture
Short
URL shortening service written in Go and React
Stars: ✭ 777 (-59.17%)
Mutual labels:  grpc, postgresql, clean-architecture, microservices-architecture
Pitstop
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency.
Stars: ✭ 708 (-62.8%)
Mutual labels:  microservices, ddd, microservices-architecture, service-mesh
Practical Clean Ddd
A simplified and effortless approach to get started with Domain-driven Design, Clean Architecture, CQRS, and Microservices patterns
Stars: ✭ 28 (-98.53%)
Mutual labels:  microservices, clean-architecture, ddd, microservices-architecture
Dotnet Template Onion
Onion Architecture with .NET 5/.NET Core and CQRS/Event Sourcing following a DDD approach
Stars: ✭ 70 (-96.32%)
Mutual labels:  dotnet-core, clean-architecture, ddd, microservices-architecture
Dotnetcore Microservices Poc
Very simplified insurance sales system made in a microservices architecture using .NET Core
Stars: ✭ 1,304 (-31.48%)
Mutual labels:  microservices, dotnet-core, ddd, microservices-architecture
Monolith Microservice Shop
Source code for https://threedots.tech/post/microservices-or-monolith-its-detail/ article.
Stars: ✭ 83 (-95.64%)
Mutual labels:  microservices, clean-architecture, ddd, microservices-architecture
Run Aspnetcore Microservices
Microservices on .Net platforms which used Asp.Net Web API, Docker, RabbitMQ, MassTransit, Grpc, Ocelot API Gateway, MongoDB, Redis, PostgreSQL, SqlServer, Dapper, Entity Framework Core, CQRS and Clean Architecture implementation. Also includes Cross-Cutting concerns like Implementing Centralized Distributed Logging with Elasticsearch, Kibana and SeriLog, use the HealthChecks with Watchdog, Implement Retry and Circuit Breaker patterns with Polly and so on.. See Microservices Architecture and Step by Step Implementation on .NET Course w/ discount->
Stars: ✭ 406 (-78.67%)
Mutual labels:  rest-api, redis, clean-architecture, microservices-architecture
Kratos
A modular-designed and easy-to-use microservices framework in Go.
Stars: ✭ 15,844 (+732.58%)
Mutual labels:  rest-api, microservices, grpc, cloud-native
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+226.33%)
Mutual labels:  rest-api, clean-architecture, ddd, ddd-example
Bankflix
Aplicação que simula um banco digital, contendo a área do cliente e administrativa, permitindo depósitos e transferências entre contas do mesmo banco. | Application that simulates a digital bank, containing the customer and administrative areas, allowing deposits and transfers between accounts of the same bank.
Stars: ✭ 82 (-95.69%)
Mutual labels:  rest-api, redis, dotnet-core, ddd
Filterlists
🛡 The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances.
Stars: ✭ 653 (-65.69%)
Mutual labels:  rest-api, redis, postgresql
Smartsql
SmartSql = MyBatis in C# + .NET Core+ Cache(Memory | Redis) + R/W Splitting + PropertyChangedTrack +Dynamic Repository + InvokeSync + Diagnostics
Stars: ✭ 775 (-59.27%)
Mutual labels:  redis, postgresql, dotnet-core
Practical.cleanarchitecture
Asp.Net Core 5 Clean Architecture (Microservices, Modular Monolith, Monolith) samples (+Blazor, Angular 11, React 17, Vue 2.6), Domain-Driven Design, CQRS, Event Sourcing, SOLID, Asp.Net Core Identity Custom Storage, Identity Server 4 Admin UI, Entity Framework Core, Selenium E2E Testing, SignalR Notification, Hangfire Tasks Scheduling, Health Checks, Security Headers, ...
Stars: ✭ 639 (-66.42%)
Mutual labels:  microservices, grpc, clean-architecture
Dubbo Go Pixiu
Based on the proxy gateway service of dubbo-go, it solves the problem that the external protocol calls the internal Dubbo cluster. At present, it supports HTTP and gRPC[developing].
Stars: ✭ 124 (-93.48%)
Mutual labels:  microservices, grpc, cloud-native
Gemini
Model Driven REST framework to automatically generate CRUD APIs
Stars: ✭ 138 (-92.75%)
Mutual labels:  rest-api, microservices, postgresql
Steeltoe
Steeltoe .NET Core Components: CircuitBreaker, Configuration, Connectors, Discovery, Logging, Management, and Security
Stars: ✭ 612 (-67.84%)
Mutual labels:  microservices, cloud-native, dotnet-core
Awesome Microservices Netcore
💎 A collection of awesome training series, articles, videos, books, courses, sample projects, and tools for Microservices in .NET Core
Stars: ✭ 865 (-54.55%)
Mutual labels:  microservices, dotnet-core, microservices-architecture

CoolStore Web Application - 🎡 Modern Application on Dapr and Tye

Travis (.org) Gitpod ready-to-code Price

CoolStore 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!

Table of contents

Dapr Building Blocks

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

Screenshots

Home page

home-page

Shopping Cart page

cart-page

Order page

order-page

Try it

Make sure you have dapr and tye installed on your machine!

Only wanna see wth is it?

$ tye run

Go to http://localhost:8000, and you're able to access to several endpoints whenevever it's ready as below:

Wanna go deeply to see how can we built it!

  1. Start core components
$ tye run tye.slim.yaml
  1. Start dapr apps locally via dapr cli
$ 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_count for ElasticSearch via run sysctl -w vm.max_map_count=262144

OS, SDK, library, tooling and prerequisites

Infrastructure

  • 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 OS
  • Docker for desktop (Kubernetes enabled) - The easiest tool to run Docker, Docker Swarm and Kubernetes on Mac and Windows
  • Kubernetes / 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 Kubernetes
  • dapr - An event-driven, portable runtime for building microservices on cloud and edge
  • tye - A developer tool that makes developing, testing, and deploying microservices and distributed applications easier

Back-end

  • .NET Core 5 - .NET Framework and .NET Core, including ASP.NET and ASP.NET Core
  • IdentityServer4 - Identity and Access Control solution for .NET Core
  • YARP - A toolkit for developing high-performance HTTP reverse proxy applications
  • FluentValidation - Popular .NET validation library for building strongly-typed validation rules
  • MediatR - Simple, unambitious mediator implementation in .NET
  • EF Core - Modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations
  • Scrutor - Assembly scanning and decoration extensions for Microsoft.Extensions.DependencyInjection
  • serilog - Simple .NET logging with fully-structured events
  • NEST - Elasticsearch.Net & NEST

Front-end

  • nodejs 10.x - JavaScript runtime built on Chrome's V8 JavaScript engine
  • typescript - A typed superset of JavaScript that compiles to plain JavaScript
  • create-react-app - A modern web app by running one command

µService development

Guidance for developing µService can be found at Clean Domain-Driven Design in 10 minutes

µService Screenshot

Open API

OpenAPI Screenshot

https://documenter.getpostman.com/view/4847807/SVmvUeZv?version=latest#9f5ed7e4-e855-46e5-a42d-64edb31bc1cb

CI/CD

Lift and Shift

Debug and Tracing Apps

  • Setup Kibana with 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

Public presentation

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :p

Contributors

Thanks goes to these wonderful people (emoji key)


Thang Chung

💻 💬 📖 👀 🚇 🚧


Phuong Le

💻 📦 🚇


Phi Huynh

🤔 🚇


Thinh Nguyen

💻 🚧


Stuart Leeks

📖

Licence

Code released under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].