The main goal of this test is to write an application consisting on a single restaurant page and following this design:
- You should write your application in Swift
- Your code should run starting iOS 11
- You must use a UICollectionView
- Your views must be defined programmatically (no xib nor storyboard for cells)
- Restaurant data are accessible on this JSON file (mock)
- Assets can be found in the archive (images)
You should provide the following elements:
- access to your git repository
- instructions to build your project
- a brief explanation of the technical choices and potential difficulties
- Your test compiles and run
- Your implementation can easily be understood by the reviewer
- Your code is testable
Création des interfaces avec autolayout directement dans le code (pas de storyboard ni de xib, ni de SwiftUI)
Aucune librairie externe n'est autorisée
Le projet doit être compatible pour iOS 11+
I used an VIP and Clean Swift architecture for my application.

- ViewController
- Presenter
- Interactor
- Router which I defined as Coordinator with factory behavior ( it implements all this objects and inject dependancies)
I found this architecture pretty well because thanks to it. I can easily test the business logic, I just have to test the ViewModel class to do it.
The whole architecture is designed to make each component as independent as possible. I use generics and protocols to separate each layer network model and ui. For testing each component can be tested independently of the others
- the main constraint was to not be able to use a storybard and to respect the mandatory design
- I wrote massive classes in UI layer to match with all the UI elements which are numerous
I used XCTest







