{"id":21121602,"url":"https://github.com/natanbs-dev/picpay-backend-challenge","last_synced_at":"2026-04-09T09:58:29.259Z","repository":{"id":263470678,"uuid":"890508651","full_name":"natanbs-dev/PicPay-backend-challenge","owner":"natanbs-dev","description":"Desafio Técnico: Backend para o PicPay Simplificado com Spring Framework. Solução robusta para cadastro, transferências e notificações, seguindo princípios SOLID e utilizando H2 para persistência.","archived":false,"fork":false,"pushed_at":"2024-11-19T17:31:52.000Z","size":630,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T05:25:24.418Z","etag":null,"topics":["crud","crud-api","h2-database","handlers","java","many-to-one","postman","spring","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":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/natanbs-dev.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,"publiccode":null,"codemeta":null}},"created_at":"2024-11-18T17:32:07.000Z","updated_at":"2024-11-19T18:07:09.000Z","dependencies_parsed_at":"2024-11-26T00:03:07.923Z","dependency_job_id":null,"html_url":"https://github.com/natanbs-dev/PicPay-backend-challenge","commit_stats":null,"previous_names":["natanbs-dev/picpaysimplificado-resolucao","natanbs-dev/picpay-backend-challenge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natanbs-dev%2FPicPay-backend-challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natanbs-dev%2FPicPay-backend-challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natanbs-dev%2FPicPay-backend-challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natanbs-dev%2FPicPay-backend-challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/natanbs-dev","download_url":"https://codeload.github.com/natanbs-dev/PicPay-backend-challenge/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243566750,"owners_count":20311931,"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":["crud","crud-api","h2-database","handlers","java","many-to-one","postman","spring","spring-boot"],"created_at":"2024-11-20T03:52:50.657Z","updated_at":"2025-12-29T09:39:56.715Z","avatar_url":"https://github.com/natanbs-dev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/main/resources/images/back-end.png\" alt=\"back-end\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003ePicPaySimplificado-Resolução \u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eDesafio técnico de backend, utilizando spring, com foco em atender ao funcionamento do PicPay Simplificado.\u003c/p\u003e\n\n\n## Objetivo: Solucionar o desafio do PicPay simplificado \n\nO PicPay Simplificado é uma plataforma de pagamentos simplificada. Nela é possível depositar e realizar transferências\nde dinheiro entre usuários. Temos 2 tipos de usuários, os comuns e lojistas, ambos têm carteira com dinheiro e realizam\ntransferências entre eles.\n\n### Requisitos do Desafio\n\nA seguir estão algumas regras de negócio que são importantes para o funcionamento do PicPay Simplificado:\n\n- Para ambos tipos de usuário, precisamos do `firstName`,`lastName` `document`,`password` e `e-mail`. O `document` e `email` devem ser\n  ú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\n  [https://util.devi.tools/api/v2/authorize](https://util.devi.tools/api/v2/authorize) para simular o serviço\n  utilizando o verbo `GET`;\n\n- A operação de transferência deve ser uma transação (ou seja, revertida em qualquer caso de inconsistência) e o\n  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\n  serviço de terceiro e eventualmente este serviço pode estar indisponível/instável. Use este mock\n  [https://util.devi.tools/api/v1/notify)](https://util.devi.tools/api/v1/notify)) para simular o envio da notificação\n  utilizando o verbo `POST`;\n\n- Este serviço deve ser RESTFul.\n\n\u003e Tente ser o mais aderente possível ao que foi pedido, mas não se preocupe se não conseguir atender a todos os\n\u003e requisitos. Durante a entrevista vamos conversar sobre o que você conseguiu fazer e o que não conseguiu.\n\n### Endpoint de transferência\n\nVocê pode implementar o que achar conveniente, porém vamos nos atentar **somente** ao fluxo de transferência entre dois\nusuários. A implementação deve seguir o contrato abaixo.\n\n```http request\nPOST /transfer\nContent-Type: application/json\n\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\num papo a respeito do que faltou.\n\n## O que será avaliado e valorizamos: \n\nHabilidades básicas de criação de projetos backend:\n- Conhecimentos sobre REST\n- Uso do Git\n- Capacidade analítica\n- Apresentação de código limpo e organizado\n\nConhecimentos intermediários de construção de projetos manuteníveis:\n- Aderência a recomendações de implementação como as PSRs\n- Aplicação e conhecimentos de SOLID\n- Identificação e aplicação de Design Patterns\n- Noções de funcionamento e uso de Cache\n- Conhecimentos sobre conceitos de containers (Docker, Podman etc)\n- Documentação e descrição de funcionalidades e manuseio do projeto\n- Implementação e conhecimentos sobre testes de unidade e integração\n- Identificar e propor melhorias\n- Boas noções de bancos de dados relacionais\n\nAptidões para criar e manter aplicações de alta qualidade:\n- Aplicação de conhecimentos de observabilidade\n- Utlização de CI para rodar testes e análises estáticas\n- Conhecimentos sobre bancos de dados não-relacionais\n- Aplicação de arquiteturas (CQRS, Event-sourcing, Microsserviços, Monolito modular)\n- Uso e implementação de mensageria\n- Noções de escalabilidade\n- Boas habilidades na aplicação do conhecimento do negócio no software\n- Implementação margeada por ferramentas de qualidade (análise estática, PHPMD, PHPStan, PHP-CS-Fixer etc)\n- Noções de PHP assíncrono\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatanbs-dev%2Fpicpay-backend-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnatanbs-dev%2Fpicpay-backend-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatanbs-dev%2Fpicpay-backend-challenge/lists"}