Using Github Api para:
- List repositories
- List pull requests from some repository
- Show detail from some pull request
Study about implementation, using three layers (Domain
, DataSource
, Presentation
), in this repository I chose follow a more flexible solutions.
- Organization
- Easy to debug
- Easy to plug layers
- Componentization
- Tests
This layer is the main, there are all business logics and all model data struct necessary for the application.
- All communications are executed through interfaces like
InterfaceAdapter
andRepositoryInterface
. Models
are data necessary toUseCases
logicUseCases
are the main logic
This layer has the reponsability to handle APIs
calls and access to DataBases
like CoreData
for example.
- All repositories here extends
RepositoryInterface
and implement interfaces toDataSources
like APIs orCoreData
if necessary
This layer has the reponsability to show and handle inputs from an interface, so in that example is implemented using like MVVM
- The
Coordinator
has the responsibility to get allDataSources
,UseCases
,ViewModel
andViewController
, so this will build everything and then showViewController
with your relativeViewModel
ViewModel
, in this case, extendsInterfaceAdapter
to receive responses fromUseCase
and implementUseCase
interfaces to execute that logicsViewController
, in that case, was created only to observeViewModel
and modifyView
without any intelligence there.- The view is a view, an only structure like
Xib
orStoryBoards
.
Image from this medium post
- Alamofire
- AlamofireImage
- Cocoapods
- Fastlane
- R.Swift
- SwiftFormat
- SwiftLint
- SwiftLocalhost
- SwiftyMocky
- Do more tests
- Discuss about necessity to translate Error from DataSource to Domain
- Discuss about best way to connect Domain to Presentation without external solutions
This project is lincesed by MIT - look at file LICENSE.md for details.