- Xcode 9.0 beta 6
- Swift 4.0
- If you does not have Cocoapod:
gem install cocoapod
- Install pods:
pod install
- Open
open Carbrito.xcworkspace
- To use fastlane: https://github.com/ronanrodrigo/carbrito/tree/master/Fastlane
┌── <Module Name>
│ ├── Core ───────────→ Itens without third party dependencies;
│ │ ├── Entities ───→ Entities from Clean Architecture. Is where all domain logic lives;
│ │ ├── Gateways ───→ Gateways protocols. Used to get data from anywhere;
│ │ ├── Presenters ─→ Presenter protocols. Used to present data from anywhere;
│ │ ├── Routers ────→ Routers protocols. Used to navigate to anywhere;
│ │ └── Usecases ───→ Usecase from Clean Architecture. Is where all app logic lives;
│ ├── Factories ──────→ Agnostic to Architecture. Used to symplify D.I. and object constructions;
│ ├── Controllers ────→ Just controller. Does not know about UI stuffs like events and elements;
│ ├── Gateways ───────→ Concrete implementation of gateways. Ex. knows about network or database;
│ ├── Routers ────────→ Concrete implementation of routers. Ex. knows about navigation controller;
│ └── Views ──────────→ UI elements and events are placed here;
├── Common ─────────────→ Shared stuffs accros modules;
└── Essentials ─────────→ Essential stuffs for the UIAppliction.
┌→ View ─────────→ Controller ─────────→ Usecase ─────────→ Gateway?/Presenter? ┐
| View |
| Where user interaction are fired. Ex. Button tapped; |
| |
| Controller |
| Call usecase to execute user interaction; |
| |
| Usecase |
| Business logic; |
| |
| Gateway |
| Optional, used to get data from anywhere. Ex. Make a HTTP request. |
| Generaly injected in usecase; |
| |
| Presenter |
| Optional, used to present data to anywhere. Ex. Update view; |
| Generaly injected in usecase; |
└─────────────←──────────────────←───────────────←────────────────←─────────────┘
🐐 Goat in Brazil is called by Cabrito.