deboramour4 / tedioff

An repository to study several design patterns (usually used in iOS Development) such as MVC, MVVM, Clean, Coordinator, Factory and others. Under construction still.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tedioff

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.


The Repository

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.

MVC Version

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:

  1. select the branch mvc
  2. download the ZIP file or clone the repository
  3. open the TedioffMVC.xcodeproj file
  4. run the project - CMD + R

MVVM Version (with closures)

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:

  1. select the branch mvvm-closures
  2. download the ZIP file or clone the repository
  3. open the TedioffMVVM.xcodeproj file
  4. run the project - CMD + R

MVVM Version (with RxSwift)

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:

  1. select the branch mvvm-rxswift
  2. download the ZIP file or clone the repository
  3. open your console at the project's folder
  4. run the command pod install
  5. open the TedioffMVVM-RxSwift.xcworkspace file
  6. run the project - CMD + R

Nubank Architecture Version (with RxSwift)

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:

  1. select the branch nubank-architecture
  2. download the ZIP file or clone the repository
  3. open your console at the project's folder
  4. run the command pod install
  5. open the TedioffNubank.xcworkspace file
  6. run the project - CMD + R

About

An repository to study several design patterns (usually used in iOS Development) such as MVC, MVVM, Clean, Coordinator, Factory and others. Under construction still.

License:MIT License