/CryptoBasket

E-Commerce crypto basket api

Primary LanguageC#

CryptoBasket

E-Commerce crypto basket api

Build status Build Status

Test coverage status

Test coverage

Architectural choice

  • The architeture used for this project was the ONION architecture

Onion Example 1

Architectural overview

Patterns used

  • S.O.L.I.D
  • DRY
  • YAGNI
  • KISS

Technologies used

  • Aps.Net Core 2.2
  • Swagger for api documentation (Swashbuckle)
  • Logs using Serilog
  • Docker
  • Polly for Http resilience

Resilience

  • Polly

The polly project

For the Http requests resilience, Polly was choose for the purpose of this example with only a retry police AddTransientHttpErrorPolicy -> WaitAndRetryAsync.

services.AddHttpClient(HttpConsts.HTTP_NAME, c =>
{
    c.BaseAddress = new Uri("https://pro-api.coinmarketcap.com/");
    
    c.DefaultRequestHeaders.Add("X-CMC_PRO_API_KEY", "my-key");
    c.DefaultRequestHeaders.Add("Accept", "application/json");
})
.AddTransientHttpErrorPolicy(builder => builder.WaitAndRetryAsync(new[]
{
    TimeSpan.FromSeconds(1),
    TimeSpan.FromSeconds(5),
    TimeSpan.FromSeconds(10)
}));

Continous integration

  • For the continous integration and deployment was used travis-ci platform. Travis-ci is a great CI/CD platform free for open source project, more information at https://travis-ci.com/.

Api design principles

  • Restfull
  • Versioning
  • Authentication
  • HATEOAS

Authorization process swagger

Authorization swagger

To build your own image

  • docker build -t myimagename .

To run the container (example)