Skip to content

learnwithkawsar/FastDelivery

Repository files navigation

Fast Delivery Management

fastdelivery-build-action Fast Delivery Management is a microservice-based delivery application designed to streamline the management of orders, identity, and tracking. Leveraging the power of Dapr, it ensures efficient and scalable service-to-service communication, with robust integrations for databases, message queues, logging, and more.

Table of Contents

Architecture

The application is structured following the principles of Clean Architecture, ensuring separation of concerns and maintainability. The use of CQRS and the Mediator pattern further enhance the scalability and responsiveness of the system. Fast Delivery Management

Goals

  • ❇️ Using Vertical Slice Architecture for architecture level.
  • ❇️ Using Domain Driven Design (DDD) to implement all business processes in microservices.
  • ❇️ Using Rabbitmq on top of MassTranit for Event Driven Architecture between our microservices.
  • ❇️ Using CQRS implementation with MediatR library.
  • ❇️ Using Entity Framework Core for some microservices.
  • ❇️ Using MongoDB for some microservices.
  • ❇️ Using Fluent Validation and a Validation Pipeline Behaviour on top of MediatR.
  • ❇️ Using Health Check for reporting the health of app infrastructure components.
  • ❇️ Using Built-In Containerization for Docker images.
  • ❇️ Using Zipkin for distributed tracing.
  • ❇️ Using OpenIddict for authentication and authorization base on OpenID-Connect and OAuth2.
  • ❇️ Using Yarp as a microservices gateway.

Fast Delivery

Fast Delivery is a sample project that consumes the microservice framework. You will learn a lot by exploring this project, which is located under the ./Fast Delivery folder.

Services Status
Gateway WIP 🚧
Identity WIP 🚧
Orders WIP 🚧
Tracking WIP 🚧
Rider WIP 🚧
Payment WIP 🚧

How to Run ?

Docker & Docker-Compose

The Fast Delivery project comes included with the required docker-compose.yaml.

There are some prerequisites for using these included docker-compose.yml files:

  1. Make sure you have docker installed (on windows install docker desktop)

  2. go to root folder and open terminal and run:

    docker-compose up 
    

Technologies & Libraries

  • .NET 8 - .NET Framework and .NET Core, including ASP.NET and ASP.NET Core
  • Dapr - Dapr provides integrated APIs for communication, state, and workflow. Dapr leverages industry best practices for security, resiliency, and observability.
  • MVC Versioning API - Set of libraries which add service API versioning to ASP.NET Web API, OData with ASP.NET Web API, and ASP.NET Core
  • EF Core - Modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations
  • MediatR - Simple, unambitious mediator implementation in .NET.
  • FluentValidation - Popular .NET validation library for building strongly-typed validation rules
  • Swagger & Swagger UI - Swagger tools for documenting API's built on ASP.NET Core
  • Serilog - Simple .NET logging with fully-structured events
  • ELK - Visualize logs with kibana
  • OpenIddict - OpenIddict aims at providing a versatile solution to implement OpenID Connect client, server and token validation support.
  • Mapster - Convention-based object-object mapper in .NET.
  • Yarp - Reverse proxy toolkit for building fast proxy servers in .NET
  • MongoDB.Driver - .NET Driver for MongoDB.

Documentation

Read Documentation related to this Boilerplate here -

Docs are not yet updated.

Changelogs

View Complete Changelogs.

Community

License

This project is licensed with the MIT license.

Support ⭐

Has this Project helped you learn something New? or Helped you at work? Here are a few ways by which you can support.

  • Leave a star! ⭐
  • Recommend this awesome project to your colleagues. 🥇

Code Contributors

This project exists thanks to all the people who contribute. Submit your PR and join the elite list!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published