My attempt to create a full independent code - DI, SOLID, Clean Architecture