PhillyBikeDock - revamped with VIPER
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.
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.