https://github.com/manishpathak99/riderapplication
The main purpose of this app is to show items and on item click , it navigates to Map
https://github.com/manishpathak99/riderapplication
Last synced: 9 months ago
JSON representation
The main purpose of this app is to show items and on item click , it navigates to Map
- Host: GitHub
- URL: https://github.com/manishpathak99/riderapplication
- Owner: manishpathak99
- Created: 2019-09-10T17:54:11.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-09-10T18:17:09.000Z (about 6 years ago)
- Last Synced: 2025-01-03T15:37:35.601Z (11 months ago)
- Language: Swift
- Size: 2.87 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RiderApp
The main purpose of this app is to show items and on item click , it navigates to screen where it shows the annotations on Map screen.
## Pre-requisites
XCode 10.2
MAC 10.14
Swift 5.0
iOS 10.0 +
## Application Version
1.0
## How to run this project
Open terminal and run `pod install`
Go to project directory and run command `xed .` in terminal to open project in Xcode.
## Architecture
In this application , VIPER pattern is used.

**V (View):**
View is responsible for the UI updates and show whatever the presenter tells it.
**I (Interactor)** The purpose of Interactor is responsible for fetching data from the model layer, and its implementation is totally independent of the user interface.All the business logic like `getting delivery data` is written inside the Interactor.
**P (Presenter)** The role of Presenter is intermediator, it gets data from interaction and passes to View. (It may be data or any user action)
**E (Entity)** Basically it is contains the Object Model which is used by Interactor. like DeliveryModel
**R (Router)** It contains navigation logic for the application for example when user clicks on list item , it navigates to Map screen
**DataManager** - The main purpose of DataManager is to handle the data flow , it decides whether the data should come from the server or from local DB.
#### Low level Data Flow Diagram
Below is the low level data flow diagram -

## Network Handling and Caching
The application is using Alamofire library for network API calls. when user open app , it starts fetching the data from server, after successfull response it saves the data in Realm database. If there is an error occured, something went wrong dialog appears .
for Image caching, Application is using kingfisher library.
## Cocoapods
Alamofire
Snapkit
ObjectMapper
RealmSwift
Kingfisher
NVActivityIndicatorView
##### For testing
Quick
Nimble
## SwiftLint
- For installing Swfitlint, Follow instructions which are written in Readme file https://github.com/realm/SwiftLint
- Run command line report `swiftlint --reporter "html" > linter.html`
- Open the .swiftlint.yml file and modify the rules if its required as per the requirement.

## Screenshots


### NOTE:
As few classes are part VIPER architecture , so I am leaving those classes with empty declaration like `DeliveryDetailModel` and `DeliveryDetailInteractor`.
### Todo
0- Mocking of Alamofire Library (Facing issue in mocking the http lib)
1- UI Test Cases