Seja bem-vindo! Este é o seu primeiro passo para fazer parte do time de desenvolvimento do maior banco de investimentos da América Latina.
O Desafio consiste no desenvolvimento de um app de conversão de moedas. O app deve permitir que o usuário selecione a moeda de origem e a moeda a ser convertida, para então inserir o valor e visualizar o resultado da conversão.
O app deve counsumir a API CurrencyLayer. Para utilizar a API será necessário fazer um cadastro no plano gratuito para obter uma chave de acesso. Como o plano gratuito da API apresenta apenas as taxas de câmbio em relação ao dólar americano (USD), caso o usuário deseje fazer uma conversão entre quaisquer outras duas moedas, será necessário primeiro converter a moeda de origem para dólar e então de dólar para a moeda desejada.
-
Android: Kotlin | iOS: Swift
-
O aplicativo deve ter duas telas principais:
- A tela de conversão deve conter:
- Dois botões que permitam o usuário a escolher as moedas de origem e de destino.
- Um campo de entrada de texto onde o usuário possa inserir o valor a ser convertido.
- Uma campo de texto para apresentar o valor convertido.
- A tela de listagem de moedas deve conter:
- Uma lista das moedas disponíves para conversão, mostrando código e nome da moeda.
- A tela de conversão deve conter:
-
A listagem de moedas deve ser mostrada obrigatóriamente em uma tela diferente da tela de conversão.
- Dê preferência para a não utilização de bibliotecas externas;
- Caso opte por usar bibliotecas externas, prefira Gradle (Android) ou CocoaPods (iOS) como gerenciadores de dependência;
- O objetivo deste desafio é avaliar o seu conhecimento técnico, estilo de código, conhecimento de arquiteturas, padrões de programação e boas práticas. Faça disso uma oportunidade pra mostrar todo o seu conhecimento.
- As taxas de câmbio disponíveis devem ser obtidas da chamada de API Supported Currencies (/list)
- A cotação atual deve ser obtida da chamada de API Real-time Rates (/live)
- É necessário fazer tratamento de erros e dos fluxos de exceção, como busca vazia, carregamento e outros erros que possam ocorrer.
- Funcinalidade de busca na lista de moedas por nome ou sigla da moeda ("dólar" ou "USD").
- Ordenação da lista de moedas por nome ou código.
- Realizar a persistência local da lista de moedas e taxas para permitir o uso do app no caso de falta de internet.
- Desenvolver testes unitários e/ou funcionais.
- Desenvolver o app seguindo a arquitetura MVVM.
- Pipeline automatizado.
Para submeter o seu desafio, faça um clone deste projeto, desenvolva localmente e, no final, abra um pull request com o formato "[Plataforma] - Nome" para a master até a data limite estabelecida. Um exemplo seria "[iOS] - João da Silva".