This repo contains a small iOS project which fetches events from Ticketmaster API and displays them in a pagginated table. More details about the event can be viewed by selecting the event.
- Download Xcode
- Clone this repository
- Navigate to Config.xcconfig and put your API key instead of <API_KEY>. More information can be found here.
The code follows the MVVM architecture and the navigation is handled by a coordinator.
It is organized in a few folders:
API
API integration.Categories
Categories extending existing functionalityCoordinators
Coordinators handling navigationHelpers
Classes for supporting functinalityModel
Data modelsViewControllers
ViewControllersViewModels
ViewModelsViews
Custom views
CoreData is used to save downloaded images from the app as Data for faster loading when possible.
Note: The above image cashing machanisim is not suggested or optimal. Especially considering that right now it does not clear the saved data. It was implemented with the sole purpose of demonstrating the usage of CoreData. A more suitable solution could be using a framework like SDWebImage.
There is unit tests coverage for the main data model and viewModels.
Simple UI test case for the happy path has been written in Behavior-Driven Development (BDD) manner. All supporting files to utilise BDD has been added as well.
- Increase Unit/UI tests coverage
- UI improvements - such as serach bar visibility, date formatting, images size/fit, etc.
- Exdended functionality for the details screen
- Building filters screen
- Custom errors screen
If you see the following error in the console when starting the application. Please review have you set up your API key correctly.
TicketMasterChallenge/AppCoordinator.swift:52: Fatal error: Error: Config file not set up correctly