- The project uses MVVM as a foundamental structure
- It get dependency injection involved to make view model testable.
- Get Alamofire and MBHUDProgress involved and integrate it as a swift package.
- Using Combine and delegates
- Get generic technic involed as well
- Add a very simple unit test towards the sorting function in RaceViewModel
- HttpServiceImpl implements the protocal HttpService, which provides the http communication with remote server
- Using service locator design pattern to hold some global service and share them accross the entire app
- Each custom uiviewcontroller and uiview inherited from base class, so it's easy for applying some global appearence.
- Decouple the ui and biz logic.
Please see the attached screen recording for your reference
- As a user, I should be able to see a time ordered list of races ordered by advertised start ascending
- As a user, I should not see races that are one minute past the advertised start
- As a user, I should be able to filter my list of races by the following categories: Horse, Harness & Greyhound racing
- As a user, I can deselect all filters to show the next 5 from of all racing categories
- As a user I should see the meeting name, race number and advertised start as a countdown for each race.
- As a user, I should always see 5 races and data should automatically refresh
- Building the app on UIKit and SwiftUI