UIKit + MVVM + Coordinator Pattern + Custom Collection View + Testable Network Layer + Protocol Orianted