{"id":19888709,"url":"https://github.com/carloshenriquefs/picpay-simple","last_synced_at":"2026-05-13T06:37:26.930Z","repository":{"id":231009617,"uuid":"780209784","full_name":"carloshenriquefs/picpay-simple","owner":"carloshenriquefs","description":"💸💳 - Challenge Picpay Simplified","archived":false,"fork":false,"pushed_at":"2024-04-02T19:01:42.000Z","size":85,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T19:17:09.869Z","etag":null,"topics":["challenge","consumer","h2-database","java21","jdbc","kafka","producer","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carloshenriquefs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-04-01T01:34:33.000Z","updated_at":"2024-04-02T19:03:35.000Z","dependencies_parsed_at":"2024-04-02T03:32:17.538Z","dependency_job_id":"35b7d87a-e584-4f09-be25-447fe2dcf3e7","html_url":"https://github.com/carloshenriquefs/picpay-simple","commit_stats":null,"previous_names":["carloshenriquefs/picpay-simple"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carloshenriquefs%2Fpicpay-simple","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carloshenriquefs%2Fpicpay-simple/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carloshenriquefs%2Fpicpay-simple/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carloshenriquefs%2Fpicpay-simple/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carloshenriquefs","download_url":"https://codeload.github.com/carloshenriquefs/picpay-simple/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241317598,"owners_count":19943201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["challenge","consumer","h2-database","java21","jdbc","kafka","producer","spring-boot"],"created_at":"2024-11-12T18:08:00.417Z","updated_at":"2026-05-13T06:37:21.890Z","avatar_url":"https://github.com/carloshenriquefs.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :construction: - Desafio Back-end PicPay\n\n\u003cdetails\u003e\n  \u003csummary\u003e :green_book: \u003cstrong\u003e- Requisitos:\u003c/strong\u003e \u003c/summary\u003e\n\n\u003c/br\u003e\n  \nPrimeiramente, obrigado pelo seu interesse em trabalhar na melhor plataforma de pagamentos do mundo!\nAbaixo você encontrará todos as informações necessárias para iniciar o seu teste.\n\n## Avisos antes de começar\n\n-   Crie um repositório no seu GitHub **sem citar nada relacionado ao PicPay**.\n-   Faça seus commits no seu repositório.\n-   Envie o link do seu repositório para o email **do recrutador responsável**.\n-   Você poderá consultar o Google, Stackoverflow ou algum projeto particular na sua máquina.\n-   Dê uma olhada nos [Materiais úteis](#materiais-úteis).\n-   Dê uma olhada em como será a [entrevista](#para-o-dia-da-entrevista-técnica).\n-   Fique à vontade para perguntar qualquer dúvida aos recrutadores.\n-   Fique tranquilo, respire, assim como você, também já passamos por essa etapa. Boa sorte! :)\n\n_Corpo do Email com o link do repositório do desafio_\n\n\u003e Seu Nome\n\u003e\n\u003e Nome do recrutador\n\u003e\n\u003e Link do repositório\n\u003e\n\u003e Link do Linkedin\n\n### Sobre o ambiente da aplicação:\n\n-   Escolha qualquer framework que se sinta **confortável** em trabalhar. Esse teste **não faz** nenhuma preferência, portanto decida por aquele com o qual estará mais seguro em apresentar e conversar com a gente na entrevista ;)\n\n-   Você pode, inclusive, não optar por framework nenhum. Neste caso, recomendamos a implementação do serviço via script para diminuir a sobrecarga de criar um servidor web.\n\n-   Ainda assim, se optar por um framework tente evitar usar muito métodos mágicos ou atalhos já prontos. Sabemos que essas facilidades aumentam a produtividade no dia-a-dia mas aqui queremos ver o **seu** código e a sua forma de resolver problemas.\n\n-   Valorizamos uma boa estrutura de containeres criada por você.\n\n## Para o dia da entrevista técnica\n\nNa data marcada pelo recrutador tenha sua aplicação rodando na sua máquina local para execução dos testes e para nos mostrar os pontos desenvolvidos e possíveis questionamentos.\nFaremos um code review junto contigo como se você já fosse do nosso time :heart:, você poderá explicar o que você pensou, como arquitetou e como pode evoluir o projeto.\n\n## Objetivo: PicPay Simplificado\n\nTemos 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.\n\nRequisitos:\n\n-   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.\n\n-   Usuários podem enviar dinheiro (efetuar transferência) para lojistas e entre usuários.\n\n-   Lojistas **só recebem** transferências, não enviam dinheiro para ninguém.\n\n-   Validar se o usuário tem saldo antes da transferência.\n\n-   Antes de finalizar a transferência, deve-se consultar um serviço autorizador externo, use este mock para simular (https://run.mocky.io/v3/5794d450-d2e2-4412-8131-73d0293ac1cc).\n\n-   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.\n\n-   No recebimento de pagamento, o usuário ou lojista precisa receber notificação (envio de email, sms) 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/54dc2cf1-3add-45b5-b5a9-6bf7e7f1f4a6).\n\n-   Este serviço deve ser RESTFul.\n\n### Payload\n\nFaça uma **proposta** :heart: de payload, se preferir, temos uma exemplo aqui:\n\nPOST /transaction\n\n```json\n{\n    \"value\": 100.0,\n    \"payer\": 4,\n    \"payee\": 15\n}\n```\n\n# Avaliação\n\nApresente sua solução utilizando o framework que você desejar, justificando a escolha.\nAtente-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.\n\nTeremos 2 partes da avaliação:\n\nA correção objetiva será realizada através da utilização de um script de correção automatizada. Você **pode** rodar na sua máquina local ou usar outra ferramenta:\n\n```\ndocker run -it --rm -v $(pwd):/project -w /project jakzal/phpqa phpmd app text cleancode,codesize,controversial,design,naming,unusedcode\n```\n\nA correção qualitativa será durante a entrevista e levará em conta os seguintes critérios:\n\n## O que será avaliado e valorizamos :heart:\n\n-   Documentação\n-   Se for para vaga sênior, foque bastante no **desenho de arquitetura**\n-   Código limpo e organizado (nomenclatura, etc)\n-   Conhecimento de padrões (PSRs, design patterns, SOLID)\n-   Ser consistente e saber argumentar suas escolhas\n-   Apresentar soluções que domina\n-   Modelagem de Dados\n-   Manutenibilidade do Código\n-   Tratamento de erros\n-   Cuidado com itens de segurança\n-   Arquitetura (estruturar o pensamento antes de escrever)\n-   Carinho em desacoplar componentes (outras camadas, service, repository)\n\nDe acordo com os critérios acima, iremos avaliar seu teste para avançarmos para a entrevista técnica.\nCaso não tenha atingido aceitavelmente o que estamos propondo acima, não iremos prosseguir com o processo.\n\n## O que NÃO será avaliado :warning:\n\n-   Fluxo de cadastro de usuários e lojistas\n-   Frontend (só avaliaremos a (API Restful)[https://www.devmedia.com.br/rest-tutorial/28912])\n-   Autenticação\n\n## O que será um Diferencial\n\n-   Uso de Docker\n-   Testes de [integração](https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing)\n-   Testes [unitários](https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing)\n-   Uso de Design Patterns\n-   Documentação\n-   Proposta de melhoria na arquitetura\n\n## Materiais úteis\n\n-   https://picpay.com/site/sobre-nos\n-   https://hub.packtpub.com/why-we-need-design-patterns/\n-   https://refactoring.guru/\n-   http://br.phptherightway.com/\n-   https://www.php-fig.org/psr/psr-12/\n-   https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing\n-   https://github.com/exakat/php-static-analysis-tools\n-   https://martinfowler.com/articles/microservices.htm\n-   https://docs.guzzlephp.org/en/stable/request-options.html\n-   https://www.devmedia.com.br/rest-tutorial/28912\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarloshenriquefs%2Fpicpay-simple","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarloshenriquefs%2Fpicpay-simple","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarloshenriquefs%2Fpicpay-simple/lists"}