- Modularização (App, CoreUI, Model, e demais módulos por funcionalidade agrupada)
- Retrofit para acesso às APIs
- Koin para injeção de dependência
- ComposeUI para interfaces
- Arquitetura MVVM
- Navegação via função e activity, com e sem passagem de parâmetro
- Exemplos de testes unitários e instrumentais estão nos módulos :
-- "challenge_model" - Testa o uso de api retrofit -- "challenge_home" - Testa o uso de tela de função -- "challenge_coreui" - Testa o uso de widgets -- "challenge_produto" - Testa o uso de tela de activity
** Agora, segue abaixo as especificações do projeto ***
Minimo SDK: API 15
Linguagem: Java ou Kotlin
Serão consideradas funcionalidades completas se:
- O descritivo da funcionalidade for implementado completamente.
- A tela estiver aderente ao protótipo.
- Não houver bugs impeditivos que atrapalhem ou impossibilitem a execução da funcionalidade.
- O layout estiver aderente à todos os devices que suportem a versão mínima e superiores.
Serão considerados bônus:
- Teste unitário
- Teste de UI
Exibir a barra de banners rotativo. Cada banner deve preencher todo o espaço horizontal da tela. Ao realizar o swipe left ou swipe right, o banner deve ser trocado pelo próximo ou anterior, conforme disponibilidade. Utilizar um indicador para facilitar ao usuário saber quantos banners existem e em qual posição ele está.
Exibir um menu deslizável horizontal com as categorias, conforme protótipo. O número de categorias é fixo, e não há necessidade de scroll infinito. Ao clicar em uma categoria, o app deve redirecionar o usuário para a Funcionalidade 04.
Exibir uma lista dos produtos mais vendidos. A lista possui um número fixo de produtos e não há necessidade de scroll infinito. Ao clicar em um produto, o usuário deve ser direcionado à Funcionalidade 05.
- Um indicador de loading deve ser exibido enquanto uma nova página estiver sendo carregada.
- O usuário não deve ficar com a rolagem e navegação travados enquanto uma nova página estiver sendo carregada.
Exibir uma lista dos produtos da categoria selecionada, conforme protótipo. O lista possui um número desconhecido de produtos, e deverá ser paginado, limitando a página em 20 registros. Ao tocar em um produto, o usuário deverá ser direcionado à Funcionalidade 05.
Exibir a descrição do produto conforme protótipo. O botão Reservar deve estar sempre visível, fixado na parte de baixo da tela. O texto de descrição poderá vir formatado como HTML. O app deve tratar esse texto e exibí-lo corretamente (negrito, itálico, etc).
Ao clicar no botão Reservar, o app deve efetuar a reserva do produto com o servidor. Exibir a mensagem de sucesso ou erro da reserva. O usuário não deve poder tocar outra vez no botão enquanto a primeira reserva não for concluída. Se a reserva for concluída com sucesso, após fechar a mensagem de sucesso, retornar para a tela que chamou a Exibição de Produto.
Exibir o logo e o nome do app. Na parte de baixo da tela, exibir o nome do desenvolvedor (seu nome) e a data de desenvolvimento.
https://scene.zeplin.io/project/589b3ef2dba1a0801d3f1be1
https://fonts.google.com/specimen/Pacifico
Os arquivos das imagens estão na pasta imagens.
https://alodjinha.herokuapp.com/swagger-ui.html
Crie um Fork desse repositório e envie um pull request.
Caso seu projeto possua alguma pré condição para ser executado, crie um arquivo README.md com um passo a passo para que seja possível executá-lo.
Projetos que não puderem ser executados não serão avaliados.
Foque em entregar funcionalidades completas!
Quantidade não é qualidade!