O objetivo desse teste é avaliar as suas habilidades em programação.
-
Install Docker on your machine
-
Execute this command
docker compose up
- Access in the browser
Have Fun !!
- Prepare o projeto para ser disponibilizado no Github, copiando o conteúdo deste repositório para o seu (ou utilize o fork do projeto e aponte para o Github). Confirme que a visibilidade do projeto é pública (não esqueça de colocar no readme a referência a este challenge);
- O projeto deve utilizar a Linguagem específica na sua Vaga (caso esteja se candidatando). Por exempo: Python, R, Scala e entre outras;
- Considere como deadline 5 dias a partir do início do desafio. Caso tenha sido convidado a realizar o teste e não seja possível concluir dentro deste período, avise a pessoa que o convidou para receber instruções sobre o que fazer.
- Documentar todo o processo de investigação para o desenvolvimento da atividade (README.md no seu repositório); os resultados destas tarefas são tão importantes do que o seu processo de pensamento e decisões à medida que as completa, por isso tente documentar e apresentar os seus hipóteses e decisões na medida do possível.
Surgiu uma nova demanda urgente e precisamos de uma área exclusiva para fazer o upload de um arquivo das transações feitas na venda de produtos por nossos clientes.
Nossa plataforma trabalha no modelo criador-afiliado, sendo assim um criador pode vender seus produtos e ter 1 ou mais afiliados também vendendo esses produtos, desde que seja paga uma comissão por venda.
Sua tarefa é construir uma interface web que possibilite o upload de um arquivo de transações de produtos vendidos, normalizar os dados e armazená-los em um banco de dados relacional.
Você deve utilizar o arquivo sales.txt para fazer o teste da aplicação. O formato esá descrito na seção "Formato do arquivo de entrada".
Sua aplicação deve:
- Ter uma tela (via formulário) para fazer o upload do arquivo
- Fazer o parsing do arquivo recebido, normalizar os dados e armazená-los em um banco de dados relacional, seguindo as definições de interpretação do arquivo
- Exibir a lista das transações de produtos importadas por produtor/afiliado, com um totalizador do valor das transações realizadas
- Fazer tratamento de erros no backend, e reportar mensagens de erro amigáveis no frontend.
- A aplicação deve ser simples de configurar e rodar, compatível com ambiente Unix. Você deve utilizar apenas bibliotecas gratuitas ou livres.
- Utilize docker para os diferentes serviços que compõe a aplicação para que funcione facilmente fora do seu ambiente pessoal.
- Use qualquer banco de dados relacional.
- Use commits pequenos no Git e escreva uma boa descrição para cada um.
- Escreva unit tests tanto no backend quanto do frontend.
- Faça o código mais legível e limpo possível.
- Escreva o código (nomes e comentários) em inglês. A documentação pode ser em português se preferir.
Sua aplicação não precisa, mas ficaremos impressionados se ela:
- Tiver documentação das APIs do backend.
- Utilizar docker-compose para orquestar os serviços num todo.
- Ter testes de integração ou end-to-end.
- Tiver toda a documentação escrita em inglês fácil de entender.
- Lidar com autenticação e/ou autorização.
Campo | Início | Fim | Tamanho | Descrição |
---|---|---|---|---|
Tipo | 1 | 1 | 1 | Tipo da transação |
Data | 2 | 26 | 25 | Data - ISO Date + GMT |
Produto | 27 | 56 | 30 | Descrição do produto |
Valor | 57 | 66 | 10 | Valor da transação em centavos |
Vendedor | 67 | 86 | 20 | Nome do vendedor |
Esses são os valores possíveis para o campo Tipo:
Tipo | Descrição | Natureza | Sinal |
---|---|---|---|
1 | Venda produtor | Entrada | + |
2 | Venda afiliado | Entrada | + |
3 | Comissão paga | Saída | - |
4 | Comissão recebida | Entrada | + |
Seu projeto será avaliado de acordo com os seguintes critérios:
- Documentação do setup do ambiente e execução que rode a aplicação com sucesso.
- Cumprimento dos requisitos funcionais e não funcionais.
- Boa estruturação do componentes e layout de código, mas sem over engineering.
- Legibilidade do código.
- Boa cobertura de testes.
- Claridade e extensão da documentação.
- Cumprimento de algum requisito bônus.
- Deve conter o título do projeto
- Uma descrição sobre o projeto em frase
- Deve conter uma lista com linguagem, framework e/ou tecnologias usadas
- Como instalar e usar o projeto (instruções)
- Não esqueça o .gitignore
- Se está usando github pessoal, referencie que é um challenge by coodesh:
This is a challenge by Coodesh
Avisar sobre a finalização e enviar para correção.
- Confira se você respondeu o Scorecard anexado na Vaga que se candidatou;
- Confira se você respondeu o Mapeamento anexado na Vaga que se candidatou;
- Acesse https://coodesh.com/challenges/review;
- Adicione o repositório com a sua solução;
- Grave um vídeo, utilizando o botão na tela de solicitar revisão da Coodesh, com no máximo 5 minutos, com a apresentação do seu projeto. Utilize o tempo para:
- Explicar o objetivo do desafio
- Quais tecnologias foram utilizadas
- Mostrar a aplicação em funcionamento
- Foque em pontos obrigatórios e diferenciais quando for apresentar.
- Adicione o link da apresentação do seu projeto no README.md.
- Verifique se o Readme está bom e faça o commit final em seu repositório;
- Confira a vaga desejada;
- Envie e aguarde as instruções para seguir no processo. Sucesso e boa sorte. =)
Use a nossa comunidade para tirar dúvidas sobre o processo ou envie uma mensagem diretamente a um especialista no chat da plataforma.