The demo is being slowed intentionally to be able to see the button action & the loading.
- Fetching and parsing data from API.
- Listing Data.
- Navigation to Details view.
- Scalability:
- Modularity.
-
IDE & Deployment target:
- XCode 15.1
- Deployment target: 17.2
-
UI:
- UIKit - Xibs
- VIPER with Clean Architecture.
-
Principals and Patterns:
- SOLID conformance:
- Features are separated into modules.
- Factory pattern to create module & Factory to create the interactor.
- Repository to format backend data.
- Shared Repository to manage communication among modules.
- SOLID conformance:
-
Dependency Manager:
- No dependencies, all is natively implemented.
- Communication among modules is being done using SharedRepository which is being implemented using singleton.
- Caching is not implemented inside the code cause of the time interval for the task.
- Using Notification center is not the best way to take the refresh action but also cause of the task time interval, it was the better solution (For now), we can use delegator in the future to delegate the action.
- All print statements are being wrapped inside
#if DEBUG
to avoid having it printed in production, it's done one time inside an extension. - The errors functions are being implemented just in case we need to have a code inside it in the future but in the mean time they are empty as the focus was on the functionalities implementation more than adding a design for each error.
- I didn't focus on the design as was mentioned to be able to finish ASAP.
- Creating caching layer to cache the data.
- Use delegation instead of NotificationCenter.