Skip to content

ronanrodrigo/carbrito

Repository files navigation

Car 🐐

codebeat badge Build Status codecov

Built with enviroment

  • Xcode 9.0 beta 6
  • Swift 4.0

Setup

  1. If you does not have Cocoapod: gem install cocoapod
  2. Install pods: pod install
  3. Open open Carbrito.xcworkspace
  4. To use fastlane: https://github.com/ronanrodrigo/carbrito/tree/master/Fastlane

Structure

┌── <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.

Main flow

┌→ 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.

About

Car average prices based on Fipe API

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published