Giter VIP home page Giter VIP logo

picpay-desafio-backend's Introduction

Desafio Back-end PicPay

Primeiramente, obrigado pelo seu interesse em trabalhar na melhor plataforma de pagamentos do mundo! Abaixo você encontrará todos as informações necessárias para iniciar o seu teste.

Avisos antes de começar

  • Faça um fork desse repositório para seu usuário
  • Crie uma branch a partir da master nesse padrão de nomenclatura: dd-mm-yy/nome-sobrenome (por exemplo, 30-04-20/meu-nome)
  • Abra o Pull Request até 1 dia antes da entrevista
  • Você poderá consultar o Google, Stackoverflow ou algum projeto particular na sua máquina.
  • Fique à vontade para perguntar qualquer dúvida aos recrutadores.
  • Fique tranquilo, respire, assim como você, também já passamos por essa etapa. Boa sorte! :)

Setup do projeto

  • Framework: Fique a vontade pra usar o framework que quiser
  • Subir local ou Docker

Objetivo - PicPay Simplificado

Temos 2 tipos de usuários, os comuns e lojistas, ambos têm carteira com dinheiro e realizam transferências entre eles. Vamos nos atentar somente ao fluxo de transferência entre dois usuários.

Requisitos:

  • Para ambos tipos de usuário, precisamos do Nome Completo, CPF, e-mail e Senha. CPF/CNPJ e e-mails devem ser únicos no sistema. Sendo assim, seu sistema deve permitir apenas um cadastro com o mesmo CPF ou endereço de e-mail.

  • Usuários podem enviar dinheiro (efetuar transferência) para lojistas e entre usuários.

  • Lojistas só recebem transferências, não enviam dinheiro para ninguém.

  • Antes de finalizar a transferência, deve-se consultar um serviço autorizador externo, use este mock para simular (https://run.mocky.io/v3/8fafdd68-a090-496f-8c9a-3442cf30dae6).

  • A operação de transferência deve ser uma transação (ou seja, revertida em qualquer caso de inconsistência) e o dinheiro deve voltar para a carteira do usuário que envia.

  • No recebimento de pagamento, o usuário ou lojista precisa receber notificação enviada por um serviço de terceiro e eventualmente este serviço pode estar indisponível/instável. Use este mock para simular o envio (https://run.mocky.io/v3/b19f7b9f-9cbf-4fc6-ad22-dc30601aec04).

Payload

POST /transaction

{
    "value" : 100.00,
    "payer" : 4,
    "payee" : 15
}

Avaliação

Caso você não se sinta à vontade com a arquitetura proposta, você pode apresentar sua solução utilizando frameworks diferentes. Atente-se a cumprir a maioria dos requisitos, pois você pode cumprir-los parcialmente e durante a avaliação vamos bater um papo a respeito do que faltou.

Teremos 2 partes da avaliação: A correção objetiva será realizada através da utilização de um script de correção automatizada. A correção qualitativa será durante a entrevista e levará em conta os seguintes critérios:

O que será avaliado e valorizamos

  • Código limpo e organizado
  • Ser consistente em suas escolhas
  • Apresentar soluções que domina
  • Modelagem de Dados
  • Manutenibilidade do Código
  • Tratamento de erros
  • Cuidado com itens de segurança
  • Arquitetura (estruturar o pensamento antes de escrever)
  • Esboço da arquitetura usando o diagrama da sua escolha

O que NÃO será avaliado

  • Fluxo de cadastro de usuários e lojistas
  • Autenticação

O que será um diferencial

  • Uso de Docker
  • Testes de integração
  • Testes unitários
  • Uso de Design Patters
  • Documentação
  • Proposta de melhoria na arquitetura

Para o dia da avaliação

Na data marcada pelo recrutador tenha sua aplicação rodando na sua máquina local ou em algum serviço ne web (Ex: Heroku).

Materiais úteis

picpay-desafio-backend's People

Contributors

josemiguelq avatar vinyvicente 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.