├── README.md ├── api └── data.json ├── assets ├── clock.png ├── pencil.png ├── rubberbands.png └── rulers.png ├── mockup-android.png └── screens ├── 01-list-parentchild.gif ├── 01-list-parentchild.mp4 └── two-line-example-2.png /README.md: -------------------------------------------------------------------------------- 1 | Teste de Android Developer Nexaas 2 | =================== 3 | 4 | Este teste é apresentado aos candidatos as vagas de Android Developer para avaliar os quesitos técnicos. 5 | 6 | ---------- 7 | 8 | 9 | O Desafio 10 | ------------- 11 | 12 | Seu objetivo é criar um app com duas telas, uma que exibe uma lista que exibe o resultado de uma API e outra mostra os dados detalhados do item selecionado 13 | 14 | > **Notas:** 15 | 16 | > - A ideia é avaliar a criação de telas com o padrão material design usando todos os componentes do androidx 17 | > - Lembre-se de seguir toda guideline material design (https://material.io/) 18 | > - Para o desenho das telas, não precisa se preocupar com a interface na horizontal; 19 | > - Material de ajuda segue no link (https://material.io/components/lists/) 20 | 21 | 22 | #### Telas 23 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 33 | 34 | 35 |
ListagemDetalhes
30 | 32 |
36 | 37 | 38 | #### Consumindo Serviço 39 | 40 | Para consumir o serviço da API Rest 41 | 42 | **Como usar:** 43 | 44 | > - **URL** https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/master/api/data.json 45 | > - **Método**: GET 46 | 47 | Exemplo de resposta 48 | > [{ 49 | "name": "Pencil", 50 | "quantity": 1, 51 | "stock": 5, 52 | "image_url": "https://github.com/myfreecomm/desafio-mobile-android/blob/master/assets/pencil.png?raw=true", 53 | "price": 150, 54 | "tax": 162, 55 | "shipping": 50, 56 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nunc magna, gravida ut orci non, egestas venenatis libero. Sed luctus, turpis at porta commodo, ipsum orci volutpat sapien, ut scelerisque diam massa lobortis odioc." 57 | }] 58 | 59 | #### Pré-requisitos 60 | 61 | - Versão mínima do SDK: 21 62 | - Tela deve ajustar em devices menores. 63 | - Utilizar Kotlin 64 | 65 | #### O que esperamos 66 | - Boa arquitetura, pode ser (mvc, mvp, mvvm, clean etc) 67 | - RxJava ou Coroutines 68 | - Testes unitários 69 | - Cache de imagens 70 | - Tratamentos de erros 71 | - Padrão de Projeto e boas práticas de Orientação a Objetos. 72 | - Google AAC (Android Architecture Components) 73 | 74 | #### Plus 75 | - Construir layouts com Constraints 76 | - Trabalhar offline (cache dos dados) 77 | - Injeção de dependência (dagger, koin, kodein) 78 | 79 | 80 | Publicação 81 | ------------- 82 | 83 | Crie um **Fork** do repositório para realizar o teste, e depois de finalizado envie um **Pull Request** para nossa equipe interna avaliar 84 | -------------------------------------------------------------------------------- /api/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Pencil", 4 | "quantity": 1, 5 | "stock": 5, 6 | "image_url": "https://github.com/charleston10/test-android-nexaas/blob/master/assets/pencil.png?raw=true", 7 | "price": 150, 8 | "tax": 162, 9 | "shipping": 50, 10 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nunc magna, gravida ut orci non, egestas venenatis libero. Sed luctus, turpis at porta commodo, ipsum orci volutpat sapien, ut scelerisque diam massa lobortis odioc." 11 | }, 12 | { 13 | "name": "Rubberbands", 14 | "quantity": 1, 15 | "stock": 8, 16 | "image_url": "https://github.com/charleston10/test-android-nexaas/blob/master/assets/rubberbands.png?raw=true", 17 | "price": 450, 18 | "tax": 81, 19 | "shipping": 0, 20 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nunc magna, gravida ut orci non, egestas venenatis libero. Sed luctus, turpis at porta commodo, ipsum orci volutpat sapien, ut scelerisque diam massa lobortis odio. Nulla ut tincidunt erat, a mollis tortor. Phasellus vel ligula leo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam id semper quam, id efficitur mi. Etiam volutpat eleifend commodo. Duis sed consectetur diam. Morbi mattis justo eget vehicula placerat. Sed commodo, neque a accumsan vehicula, magna libero lacinia dolor, a consectetur turpis odio nec risus. Nullam id dui lacus." 21 | }, 22 | { 23 | "name": "Rulers", 24 | "quantity": 1, 25 | "stock": 1, 26 | "image_url": "https://github.com/charleston10/test-android-nexaas/blob/master/assets/rulers.png?raw=true", 27 | "price": 800, 28 | "tax": 0, 29 | "shipping": 100, 30 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nunc magna, gravida ut orci non, egestas venenatis libero. Sed luctus, turpis at porta commodo, ipsum orci volutpat sapien, ut scelerisque diam massa lobortis odioc." 31 | }, 32 | { 33 | "name": "Clock", 34 | "quantity": 1, 35 | "stock": 10, 36 | "image_url": "https://github.com/charleston10/test-android-nexaas/blob/master/assets/clock.png?raw=true", 37 | "price": 2200, 38 | "tax": 81, 39 | "shipping": 50, 40 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nunc magna, gravida ut orci non, egestas venenatis libero. Sed luctus, turpis at porta commodo, ipsum orci volutpat sapien, ut scelerisque diam massa lobortis odio. Nulla ut tincidunt erat, a mollis tortor. Phasellus vel ligula leo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam id semper quam, id efficitur mi. Etiam volutpat eleifend commodo. Duis sed consectetur diam. Morbi mattis justo eget vehicula placerat. Sed commodo, neque a accumsan vehicula, magna libero lacinia dolor, a consectetur turpis odio nec risus. Nullam id dui lacus." 41 | } 42 | ] -------------------------------------------------------------------------------- /assets/clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/assets/clock.png -------------------------------------------------------------------------------- /assets/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/assets/pencil.png -------------------------------------------------------------------------------- /assets/rubberbands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/assets/rubberbands.png -------------------------------------------------------------------------------- /assets/rulers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/assets/rulers.png -------------------------------------------------------------------------------- /mockup-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/mockup-android.png -------------------------------------------------------------------------------- /screens/01-list-parentchild.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/screens/01-list-parentchild.gif -------------------------------------------------------------------------------- /screens/01-list-parentchild.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/screens/01-list-parentchild.mp4 -------------------------------------------------------------------------------- /screens/two-line-example-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/myfreecomm/desafio-mobile-android/eb449fad05c04524f4d1b1a1b4d35a9658cc9e7e/screens/two-line-example-2.png --------------------------------------------------------------------------------