Skip to content

Kangaroo is a sample open source goods delivery application, powered by microservices ☸️ architecture and cross-platform development 📱🖥🐳

License

komdil/Kangaroo

 
 

Repository files navigation

Kangaroo

Gitter Build Status Kangaroo.sln build

Kangaroo is containerized microservices application based on .NET Core. The project demonstrates how to develop small microservices for larger applications using containers, orchestration, service discovery, gateway, and best practices. You are always welcome to improve code quality and contribute it, if you have any questions or issues don't hesitate to ask in our gitter chat.

Motivation

  • Developing independently deployable and scalable micro-services
  • Developing cross-platform beautiful mobile apps using React native
  • Configuring CI/CD pipelines using Travis CI, Github Actions, automated deployments using Google Kubernetes Engine, Docker Containers
  • Using modern technologies such as gRPC, RabbitMQ, Service meshes
  • Writing clean, maintainable and fully testable code, Unit Testing, Integration Testing and Mocking practices
  • Using SOLID Design Principles
  • Using Design Patterns and Best practices such as DDD and CQRS

Architecture overview

The architecture proposes a microservice oriented architecture implementation with multiple autonomous microservices (each one owning its own data/db) and implementing different approaches within each microservice (simple CRUD vs. DDD/CQRS patterns) using REST/HTTP as the communication protocol between the client apps, and supports asynchronous communication for data updates propagation across multiple services based on gRPC, Integration Events and an Event Bus(RabbitMQ)

List of micro-services and infrastructure components

Service Description Build status Endpoints
1. Delivery API (DDD, CQRS, EF Core, Dapper, SQL Server) Deals with Delivery book/orders and their statuses View
2. Courier API (CRUD, Repository, MongoDB) Manages Couriers and their deliveries with real time tracking and delivery status updates View
3. Pricing API (Redis Cache, Google Maps API) Calculates delivery price based on distance, delivery duration and goods weight. Uses Google Maps API View
4. Identity API(soon) (.NET Core + IdentityServer4) Identity management service, powered by OAuth2 and OpenID Connect (soon)
5. Payment API(soon) (DDD, CQRS, Postresql) Responsible for financial and payments (soon)

How to start the solution?

cd to cloned repository and execute:

docker-compose up

Available services:

Contributing

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

License

Code released under the MIT license.

About

Kangaroo is a sample open source goods delivery application, powered by microservices ☸️ architecture and cross-platform development 📱🖥🐳

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 96.8%
  • Dockerfile 2.6%
  • Shell 0.6%