Clean architecture

Clean architecture is a style of software architecture designed to make an application independent of its interface, database or framework. It is based on layers and strict dependency rules to guarantee maintainability, testability and scalability.