Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desafio iOS - Github Java Repos #4

Open
wants to merge 37 commits into
base: master
Choose a base branch
from
Open

Desafio iOS - Github Java Repos #4

wants to merge 37 commits into from

Conversation

felipericieri
Copy link

@felipericieri felipericieri commented Oct 29, 2017

Olá,

Segue na íntegra a Pull Request com o Desafio iOS concluído.

Revisão dos Requisitos

  • Esta Pull Request origina-se de uma cópia (fork) do repositório indicado na especificação do desafio (https://github.com/myfreecomm/desafio-mobile-ios);
  • O projeto suporta iOS 8.0+, como solicitado (apesar de acreditar ser desnecessário, uma vez que o market share desta versão é menor que 2% segundo a última atualização da Apple, em setembro deste ano: https://developer.apple.com/support/app-store);
  • O projeto foi escrito em Swift 4.0 (salvas apenas duas dependências escritas em Objective-C);
  • Utilizei a última versão distribuída a público do Xcode (9.0.1);
  • O projeto possui um .gitignore, como solicitado;
  • O projeto usa Storyboards com Auto Layout, como solicitado;
  • Para gerir as dependências, uso o Cocoapods. Existe um Podfile na pasta "DesafioIOS";
  • Para lidar com as requisições à API do Github, uso o Alamofire;
  • A "deserialização" e mapeamento das respostas é feita com SwiftJSON;
  • O projeto possui cobertura de testes unitários com XCTestCase;
  • O projeto dá suporte a qualquer resolução (trata-se de um aplicativo "Universal");
  • Uso SDWebImage para guardar o cache das imagens carregadas assincronamente.

Bônus
Tomei a liberdade de adicionar algumas funcionalidades a mais no projeto:

  • O aplicativo está disponível em Inglês (idioma base) e Português brasileiro;
  • Uso a dependência ReachabilitySwift para administrar a conexão do usuário à internet;
  • Uso duas dependências próprias para lidar localmente com a UI (caso queira conhecer mais dependências que escrevi, por favor acesse: https://github.com/felipericieri?tab=repositories);
  • O código-fonte está documentado em inglês.

Instalação
Para poder executar o projeto localmente será necessário:

  • Clonar este branch;
  • Dentro da pasta DesafioIOS executar pod install;
  • Pronto! Basta abrir o workspace gerado pelo Cocoapods e começar a avaliação ☕️.

Arquitetura

  • Para construir as "cenas" e evitar "Monster View Controllers" utilizei MVVM;
  • A interface para se comunicar com a API do Github é bastante simples: utiliza um cliente responsável pela requisição (RestClient) e um micro-serviço para cada tarefa (Repository & PullRequest).

Estou disponível para tirar dúvidas, se existirem.
Aguardo o resultado, até mais! 👋

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant