This app displays a list of activities on a certain location in Australia
- XCode 9.2
- Minimum iOS Version: 10.0
- The app supports all orientations and screen sizes.
- The goal of the project is to create an ActivityTracker that displays a list of Locaton from which a detail of that location including list of top runners and activities can be seen.
- The app is divided in 3 main targets
-
This target uses MVVM pattern to layout the UI. The ViewModels hold the business logic and the network interactions. They do not know about the views which makes them reuseable and portable for different projects.
-
LocationsListViewController: Displays a list of locations with their position on a non-interactive-map
-
LocationDetailViewController: Displays a the detail of the location. This screen is divided into 3 sections. Map, Top Runners and Activities for easier control over the UI.
- Defines the entities that will be used in the app. The entities conforms to Codable protocol for json serialization
- Defines a generic protocol based APIClient and Result class that carries out the network operations.
- ActivityTracker target for individual ViewControllers testing
- Model serialization in ATLocationCore framekwork
- Network operations in ATNetworkusing using mock APIClient and and MockURLSession to mimic the behavior of the server.
- ActivityTracker: 42%
- ATNetwork: 83%
- ATLocationCore: 100%
- SDWebImage: This framework is used to load images from a given url and cache them.
- QUICK: BDD unit testing framework
- NIMBLE: A matcher framework to make expectations in unit tests more readable.
- Loading state for the view when network request is in progress
- Display message when the request fails.
- Improve transition from Locations list to Location detail view
- Detail view for Activity and Profile screens so that the Location detail can be more interactive.
- Additional test coverage for UI