An iOS app to show deliveries to be made as a list and address details on a Map.
Install cocoapods and run pod install in the project directory for a quick setup.
pod repo update
pod install
Mac based system. Xcode Version 10.3+
-
App supports iPhone devices with iOS10+ only.
-
App supports potrait mode only.
-
Cached deliveries are the default datasource and all the deliveries from cache are stored at initialization of deliveryListViewModel.
-
If the number of deliveries received from API are less than the requested amount, it is assumed that there is no more deliveries available from the API and no further calls are made.(here)
If you have fastlane installed you can run 'fastlane tests' to intiate testing, otherwise press Cmd+U in Xcode to run the unit tests.
fastlane tests
There are tests in individual groups to test different layers.
SwiftLint is used to enforce Swift style and conventions.
Model-View-ViewModel (MVVM) is a software design pattern that is structured to separate program logic and user interface controls.
- View
View is represented by the UIView or UIViewController objects which should only display prepared data.
- ViewModel
ViewModel hides all asynchronous networking code, data preparation code for visual presentation, and code listening for Model changes.
- Model
It simply holds the data and has nothing to do with any of the business logic.
- Router
Router handles all the routing logic and thus separates this concerns from the View.
- Moya - Network abstraction layer on Alamofire.
- Kingfisher - for downloading and caching images from the web
- SwiftLint - A tool to enforce Swift style and conventions.
- SnapKit - Swift Autolayout DSL
- DZNEmptyDataSet - A drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the view has no content to display
- Toast-Swift - A Swift extension that adds toast notifications to the UIView object class.
- Create account on firebase.
- Replace "GoogleService-Info.plist" file with your plist file which will be geretated while creating an app on firebase.
- For more details follow the link https://firebase.google.com/docs/crashlytics/