A rewrite of my Philly Bike Dock app using the basic VIPER pattern. VIPER is derived from clean architecture principals and is often used on larger projects to isolate concerns into layers.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
PhillyBikeDock-VIPER
.gitignore
README.md

README.md

PhillyBikeDock - revamped with VIPER

Introduction

I have already published this app on the iOS app store. Here is the link. I based it on the standard MVC pattern. Lately, I have been part of a team that is building an enterprise app for a fortune 200 company. We have been using MVVM with Coordinators and RxSwift to build it. We use clean architecture to separate concerns into distinct layers that handle data, business logic, and presentation. As an offshoot of this, I have decided to rewrite my Philly Bike Dock app using the basic VIPER pattern. VIPER is derived from clean architecture principals and is often used on larger projects to isolate concerns into layers. Doing this helps increase code coverage for testing because it is practical to test the smaller pieces. Among other things, it is also easier for team members to work on smaller classes, models, and controllers without encountering conflicts.

Note: I would usually not use VIPER on smaller projects like this but in this case, I wanted to go through the process of migrating an existing project to VIPER.

Using:

Swift 4
iOS 11

Viper architecture:

Please clone the repo and examine the code. I’m happy to answer questions, and to provide assistance if you are interested in learning more about VIPER.

Special thanks to pedrohperalta whose Articles project inspired my approach here. Among other things, I really liked (and, consequently, emulated!) the way he organizes folder groups and files in his project. I also discovered Rswift and PKHUD thanks to his code. On the other hand, I decided to go with Swift 4 codables for json parsing instead of ObjectMapper, and with Swift 4 being so concise for REST calls, I decided not to bring in Alamofire.