|
3 | 3 |
|
4 | 4 | O objetivo desse code challenge é, mais do que seu currículo, formação e certificações, avaliarmos como você lida com esse desafio, quais ferramentas escolhe, a qualidade do seu código e a maneira de pensar nele. |
5 | 5 |
|
6 | | -A solução desse desafio é extremamente importante para entendermos os seus requisitos de qualidade, organização do seu código, performance, portabilidade e etc... |
| 6 | +A solução desse desafio é extremamente importante para entendermos os seus requisitos de qualidade, organização do seu código, performance, portabilidade, etc. |
7 | 7 |
|
8 | | -Sinta-se à vontade para escolher a tecnologia e ferramentas. Queremos ser surpreendidos pela sua abordagem no desafio! |
| 8 | +Sinta-se à vontade para escolher a tecnologia e ferramentas que achar necessário. Queremos ser surpreendidos pela sua abordagem no desafio! |
9 | 9 |
|
10 | 10 | Temos apenas dois pré-requisitos: código testado e pronto para produção. |
11 | 11 |
|
@@ -123,53 +123,54 @@ Exemplo de contrato de OUTPUT: |
123 | 123 | **Os dados devem ser armazenados conforme o contrato de OUTPUT também.** |
124 | 124 |
|
125 | 125 |
|
126 | | -## FRONT-END ou APPS: Fazer uma interface de interação |
| 126 | +## FRONT-END/APPS: Interface |
127 | 127 |
|
128 | | -Em [função do nosso layout base](layout-desktop.jpg), **fique a vontade para reformulá-lo** a fim de casar com os seguintes **comportamentos obrigatórios**: |
129 | | - |
130 | | -- Quando se clicar em um cliente, deve apresentar uma tela de detalhe com as informações dele. |
131 | | -- Permitir a possibilidade do usuário navegar entre as fotos dos clientes na listagem e/ou detalhe. |
132 | | -- Filtros pela região e/ou classificação do cliente. |
133 | | -- Paginação por 30 elementos. |
134 | | -- Interface responsiva (front) / adaptável para telas diferentes (apps). |
135 | | -- A lógica nesse caso ficará toda no front/app, então você vai trabalhar com todos dados em memória. O input deve ser acessado via request http (CORS friendly). |
136 | | - |
137 | | -Use sua criatividade e aproveite das informações do usuário para mostrar o card e o detalhe como você entende que seria a melhor forma e também a mais performática. |
| 128 | +Em [função do nosso layout base](layout-desktop.jpg), **fique a vontade para reformulá-lo** a fim de casar com os seguintes **requisitos obrigatórios**: |
| 129 | + |
| 130 | + - Uma tela de detalhe deve ser apresentada quando se clicar em um cliente. |
| 131 | + - Navegação entre as fotos dos clientes. |
| 132 | + - Filtros pela região e/ou classificação do cliente. |
| 133 | + - A interface **deve** ser responsiva (front-end) |
| 134 | + - A interface **deve** ser adaptável para telas diferentes (apps) |
| 135 | + - Não deve existir alguém externo, isto é, todo a lógica tem que ser trabalhada em memória, dentro do seu projeto. O carregamento dos dados de input deve ser por meio de request HTTP. |
138 | 136 |
|
139 | | -Você deverá usar como input os links abaixo (~200 registros cada): |
| 137 | +Desenvolva da maneira que você achar melhor como mostrar os dados do usuário. |
| 138 | + |
| 139 | +Use como input os links abaixo (~200 registros cada): |
140 | 140 |
|
141 | 141 | - https://storage.googleapis.com/juntossomosmais-code-challenge/input-frontend-apps.csv |
142 | 142 | - https://storage.googleapis.com/juntossomosmais-code-challenge/input-frontend-apps.json |
143 | 143 |
|
144 | | -## BACK-END: Fazer uma API |
| 144 | +## BACK-END: API |
145 | 145 |
|
146 | | -Coloque essa lógica numa API backend, onde dada a **região do usuário** e seu **tipo de classificação** em uma request o seu response será a **listagem dos elegíveis**. O routing da aplicação fica a seu gosto. |
| 146 | +Pense em uma API que dada a **região do usuário** e seu **tipo de classificação**, responda a **listagem dos elegíveis**. Não existe routing definido para a aplicação, fica a seu gosto. |
147 | 147 |
|
148 | | -Assim como no FRONT-END e APPS, é **obrigatório** trabalhar com toda manipulação dos dados **em memória** (não é permitido usar qualquer tipo de database), então você precisará carregar o source em algum momento e fazendo **uma requisição HTTP** para uma das urls logo abaixo para obter os dados. |
| 148 | +É **obrigatório** trabalhar com toda manipulação dos dados **em memória**. O carregamento dos dados de input deve ser por meio de request HTTP. |
149 | 149 |
|
150 | | -O payload da response, além de conter a lista de usuários com o contrato de _output_, **deve conter** os seguintes metadados de paginação e totais, implementar esses metadados é **obrigatório**: |
| 150 | +Além da lista dos usuários elegíveis, para permitir navegação entre os registros, **deve ser implementado** os seguintes metadados de paginação: |
151 | 151 |
|
152 | 152 | ``` |
153 | 153 | { |
154 | | - pageNumber: int32, |
155 | | - pageSize: int32, |
156 | | - totalCount: int32, |
157 | | - listings: [ |
| 154 | + pageNumber: X, |
| 155 | + pageSize: P, |
| 156 | + totalCount: T, |
| 157 | + users: [ |
158 | 158 | ... |
159 | 159 | ] |
160 | 160 | } |
161 | 161 | ``` |
162 | 162 |
|
163 | | -Faça essa API pensando que ela pode ser consumida por vários tipos de clientes e com diferentes propósitos, portanto implemente o que mais achar relevante e que faça sentido. |
| 163 | +Imagine que essa API seja possa ser acessada por consumidores específicos, então coloque o que mais achar necessário. |
164 | 164 |
|
165 | | -Você deverá usar como source os links abaixo (~1000 registros cada): |
| 165 | +Use como input os links abaixo (~1000 registros cada): |
166 | 166 |
|
167 | 167 | - https://storage.googleapis.com/juntossomosmais-code-challenge/input-backend.csv |
168 | 168 | - https://storage.googleapis.com/juntossomosmais-code-challenge/input-backend.json |
169 | 169 |
|
170 | 170 | # Como entregar |
171 | 171 |
|
172 | | -Você deve disponibilizar seu código em algum serviço de hospedagem como Bitbucket, Gitlab ou Github. Manter o repo como privado. |
| 172 | +Você deve disponibilizar seu código em algum serviço de hospedagem como Bitbucket, Gitlab ou Github e manter o repositório como privado. |
| 173 | + |
173 | 174 | É obrigatório ter um **README** com todas as instruções sobre o seu desafio. |
174 | 175 |
|
175 | 176 | Assim que finalizar, nos avise para enviarmos os usuários que devem ter acesso para avaliação. |
0 commit comments