Giter VIP home page Giter VIP logo

technical-test-afiliados's Introduction

Fullstack Afiliados

O objetivo desse teste é avaliar as suas habilidades em programação.

Running the project

  1. Install Docker on your machine

  2. Execute this command

docker compose up

  1. Access in the browser

http://localhost:3000/

Have Fun !!

Antes de começar

  • 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.

Descrição do projeto

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".

Requisitos Funcionais

Sua aplicação deve:

  1. Ter uma tela (via formulário) para fazer o upload do arquivo
  2. 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
  3. Exibir a lista das transações de produtos importadas por produtor/afiliado, com um totalizador do valor das transações realizadas
  4. Fazer tratamento de erros no backend, e reportar mensagens de erro amigáveis no frontend.

Requisitos Não Funcionais

  1. A aplicação deve ser simples de configurar e rodar, compatível com ambiente Unix. Você deve utilizar apenas bibliotecas gratuitas ou livres.
  2. Utilize docker para os diferentes serviços que compõe a aplicação para que funcione facilmente fora do seu ambiente pessoal.
  3. Use qualquer banco de dados relacional.
  4. Use commits pequenos no Git e escreva uma boa descrição para cada um.
  5. Escreva unit tests tanto no backend quanto do frontend.
  6. Faça o código mais legível e limpo possível.
  7. Escreva o código (nomes e comentários) em inglês. A documentação pode ser em português se preferir.

Requisitos Bônus

Sua aplicação não precisa, mas ficaremos impressionados se ela:

  1. Tiver documentação das APIs do backend.
  2. Utilizar docker-compose para orquestar os serviços num todo.
  3. Ter testes de integração ou end-to-end.
  4. Tiver toda a documentação escrita em inglês fácil de entender.
  5. Lidar com autenticação e/ou autorização.

Formato do arquivo de entrada

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

Tipos de transação

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 +

Avaliação

Seu projeto será avaliado de acordo com os seguintes critérios:

  1. Documentação do setup do ambiente e execução que rode a aplicação com sucesso.
  2. Cumprimento dos requisitos funcionais e não funcionais.
  3. Boa estruturação do componentes e layout de código, mas sem over engineering.
  4. Legibilidade do código.
  5. Boa cobertura de testes.
  6. Claridade e extensão da documentação.
  7. Cumprimento de algum requisito bônus.

Readme do Repositório

  • 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

Finalização e Instruções para a Apresentação

Avisar sobre a finalização e enviar para correção.

  1. Confira se você respondeu o Scorecard anexado na Vaga que se candidatou;
  2. Confira se você respondeu o Mapeamento anexado na Vaga que se candidatou;
  3. Acesse https://coodesh.com/challenges/review;
  4. Adicione o repositório com a sua solução;
  5. 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.
  1. Adicione o link da apresentação do seu projeto no README.md.
  2. Verifique se o Readme está bom e faça o commit final em seu repositório;
  3. Confira a vaga desejada;
  4. Envie e aguarde as instruções para seguir no processo. Sucesso e boa sorte. =)

Suporte

Use a nossa comunidade para tirar dúvidas sobre o processo ou envie uma mensagem diretamente a um especialista no chat da plataforma.

technical-test-afiliados's People

Contributors

bartolomeu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.