Skip to content

LuizFCDuarte/challenge-alpha

 
 

Repository files navigation

Challenge-alpha

Desafio mobile

Por: Luiz Fernando Duate < [email protected]>.

1. Conteúdo

2. O Projeto

Arquitetura: MVC-C

Escolhi essa arquitetura uma vez que essa atenderia aos requisitos necessários do projeto e não intruduz uma complexidade maior a este. Além disso, implementei um Coordinator, para tirar das ViewControllers a lógica de fluxo do app, exugando o código delas. Para uma que todos os detalhes implementados fossem expostos, a consulta a API padrão é feita com a URL : GET https://www.hurb.com/search/api?q=buzios&page=2 O app conta com uma tela de carregamento e um feed que mostra os pacotes e os hoteis categorizados por número de estrelas.

3. Design

Para as escolhas do design do app decidi me inspirar no app iOS da Hurb e também no site da empresa. Além disso, olhei para soluções similares para buscar inspirações de design. Desse modo, decidi estruturar o feed como uma tableView. A primeira secção dessa exibe os pacotes se existirem e as demais exibem os hotéis agrupados pelo número de estrelas. A exibição dos hotéis e pacotes é feita com uma collectionView com scroll horizontal.

appDemo

4. Testes

4.1. Unitários

Para garantir que as principais funcionalidades do app fossem supridas e o app funcionasse conforme o esperado, preparei testes para o NetworkAdapter e o Data Manager. Desse modo, pude garantir a consistência das informações recebidas da API e como elas são tratadas pelo app.

4.2. UI

O teste de UI, consiste em avaliar o scroll vertical do feed e o scroll horizontal das células deste

5. Testes

5.1. CocoaPods

5.1.1. SwiftLint

Para garantir uma padronização do código, adicionei o SwiftLint, o qual em projetos em larga escala auxilia na legibilidade e manutenção do código.

5.1.2. Moya

Optei por usar o Moya, ao invés de lidar com o request manualmente, visto que apesar de adicionar uma dependência ao projeto, ela permite uma maior escalabilidade organização dele.

5.1.3. SnapKit

Com o SnapKit é mais simples a criação de constraints via código. Além disso, a lógia utilizada por ele se assemelha a nativa do UIKit, o que garante mais agilidade na confecção de constraints.

5.1.4. Kingfisher

Essa ferramenta oferece maneiras eficientes para fazer o dowload de imagens, auxiliando na responsividade e na diminuição do número de requests para o serviço de hospedagem

Essa ferramenta permite que a collectionView tenha o layout em estilo Carousel, melhorando a experiência do usuário

6. Vulnerabilidades

6.1. Protocolo de rede usado por algumas imagens

Algumas urls para imagens não conformavam com o protocolo https, dessa forma uma vez que a Apple exige de apps em produção que ultilizem urls que conformem com esse protocolo, resolvi substituir o protocolo dessas imagens por um https, o que pode garantir vulnarabilidades à aplicação.

About

Desafio mobile

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 98.7%
  • Ruby 1.3%