Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 1 month 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 (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-09-10T18:17:09.000Z (over 5 years ago)
- Last Synced: 2024-11-09T07:34:30.618Z (3 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.2MAC 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.
![Imgur Image](https://github.com/manishpathak99/RiderApplication/blob/master/Screenshots/diagram.png)
**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 -
![Imgur Image](https://github.com/manishpathak99/RiderApplication/blob/master/Screenshots/low-level-data-flow-diagram.png)## 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
AlamofireSnapkit
ObjectMapperRealmSwift
Kingfisher
NVActivityIndicatorView
##### For testingQuick
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.
![Imgur Image](https://github.com/manishpathak99/RiderApplication/blob/master/Screenshots/swiftlint.png)
## Screenshots
![Imgur Image](https://github.com/manishpathak99/RiderApplication/blob/master/Screenshots/screen1.png)![Imgur Image](https://github.com/manishpathak99/RiderApplication/blob/master/Screenshots/screen2.png)
### 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