For this coding exercise, you must fetch data from a REST API and populate a list on screen. While the scope of this task is small, imagine your solution will be applied to a full scale application.
Add however much flair and polish you think appropriately showcases your talents as a mobile developer. Be sure to use Kotlin/Java for an Android solution, or Swift for an iOS solution.
Please see the included Example.png for what you should aim for your UI to look like. Your UI does not have to match exactly, this is simply an example.
You will be evaluated based on:
- Use of best practices
- Scalability
- Testability
- This project was developed using the MVVM design pattern. The main reason to choose this solution is scalability and testability. Although a MVC pattern would work fine for this project as it currently is, as the project grows it would be important to have a more defined separation of concerns with the addition of the ViewModel.
- A VIPER design pattern would be overkill for this project as it is more suitable for big applications and large teams.
- Make sure to use the file named "Events.xcworkspace" to test this project as it is using Cocoapods
- Integrated Kingfisher library for image caching
- Integrated Alamofire for network fetching
- Added a unit test to confirm that we are able to fetch the list of events from the server correctly
- Implemented a search feature to filter the events by name
- Implemented a favorites tab that you populate by tapping the heart button on the home screen
- Added icons for app and tab bar
- Created a black gradient layer on top of the event images to make text readable
- There is nothing implemented on the Browse, My tickets and Account tabs
- Used User Defaults for persistence
- Implemented Auto Layout