Tedioff is a simple single-view iOS app that allows you search new cool activities to do when you're super bored. The activities come from the BoredAPI.
This repository brings together multiple versions of the same application - Tedioff - across different software architectures (usually used in iOS Development). There are four versions of the app and it can be found at different branches:
- mvc
- mvvm-closures
- mvvm-rxswift
- nubank-architecture
It's important to say that it was created with the purpose of learning. So it might be constantly updated (since I'm in continuous learning about all that). Feedbacks are always welcome 💜 Feel free to open a new issue if you want to tell me something.
The details of each version of the app in the description below.
The Model-View-Controller version of Tedioff is based on Apple's documentation. Apple's version is a adaptation of the original MVC created in the 1970s by Trygve Reenskaug.
To run this version of Tedioff you must:
- select the branch
mvc
- download the ZIP file or clone the repository
- open the TedioffMVC.xcodeproj file
- run the project - CMD + R
This version is inspired in Model-View-ViewModel architecture that was created in 2005 by Ken Cooper y Ted Peters, two architects of software in Microsoft. I used closures to bind data beetween View Model and the View.
To run this version of Tedioff you must:
- select the branch
mvvm-closures
- download the ZIP file or clone the repository
- open the TedioffMVVM.xcodeproj file
- run the project - CMD + R
After implementing the MVVM using Swift closures I decided to add some reactivity to the process. I used the RxSwift framework to create the two-way data binding between the View Model and the View.
To run this version of Tedioff you must:
- select the branch
mvvm-rxswift
- download the ZIP file or clone the repository
- open your console at the project's folder
- run the command
pod install
- open the TedioffMVVM-RxSwift.xcworkspace file
- run the project - CMD + R
Finally, I implemented a version of Tedioff inspired by the architecture used at Nubank. This architecture was very inspired by The Clean Architecture from Uncle Bob, which gives the decoupling, testability and single responsibility necessary for the company. You can see more about Nubank's architecture at this link. This projects uses RxSwift to bind data.
To run this version of Tedioff you must:
- select the branch
nubank-architecture
- download the ZIP file or clone the repository
- open your console at the project's folder
- run the command
pod install
- open the TedioffNubank.xcworkspace file
- run the project - CMD + R