{"id":20054538,"url":"https://github.com/fioshi/java-picpay-simp","last_synced_at":"2026-05-07T19:06:37.625Z","repository":{"id":243144362,"uuid":"809851036","full_name":"Fioshi/java-picpay-simp","owner":"Fioshi","description":"👨‍💻 Projeto com o desafio de resolver o case back end do PicPay de forma abrangente e eficaz! 🚀🔍","archived":false,"fork":false,"pushed_at":"2024-09-20T18:55:01.000Z","size":155,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-12T21:31:17.671Z","etag":null,"topics":["docker","java","mermaid-diagrams","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fioshi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-06-03T15:10:47.000Z","updated_at":"2024-09-20T18:55:05.000Z","dependencies_parsed_at":"2024-07-10T21:46:02.241Z","dependency_job_id":"cadea1de-6634-4821-9bb8-1b8b8aff9472","html_url":"https://github.com/Fioshi/java-picpay-simp","commit_stats":null,"previous_names":["fioshi/picpay-simp","fioshi/java-picpay-simp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fioshi%2Fjava-picpay-simp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fioshi%2Fjava-picpay-simp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fioshi%2Fjava-picpay-simp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fioshi%2Fjava-picpay-simp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fioshi","download_url":"https://codeload.github.com/Fioshi/java-picpay-simp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241483158,"owners_count":19970042,"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":["docker","java","mermaid-diagrams","spring-boot"],"created_at":"2024-11-13T12:41:05.969Z","updated_at":"2026-05-07T19:06:32.584Z","avatar_url":"https://github.com/Fioshi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Plataforma de Pagamentos - Desafio Back End\r\n\r\nEste repositório contém a solução para o desafio back end de uma plataforma de pagamentos. O projeto foi desenvolvido utilizando **Spring Boot**, **Spring Data JPA**, **Docker**, **Docker Compose** e **MySQL**. Também foram criados diagramas de arquitetura para melhor compreensão da solução.\r\n\r\n## 🛠️ Tecnologias Utilizadas\r\n\r\n- **Spring Boot**: 🚀 Framework principal para desenvolvimento do aplicativo.\r\n- **Spring Data JPA**: 📊 Utilizado para persistência de dados.\r\n- **Docker**: 🐳 Ferramenta de containerização para empacotar a aplicação.\r\n- **Docker Compose**: 📦 Utilizado para orquestrar containers Docker.\r\n- **MySQL**: 🗄️ Banco de dados relacional\r\n\r\n## 🔍 Documentação da API com Swagger\r\nA API possui documentação interativa gerada pelo Swagger, que facilita a visualização e teste dos endpoints.\r\n\r\nAcesso à Documentação\r\nApós iniciar a aplicação, acesse http://localhost:8080/swagger-ui.html para visualizar a documentação da API.\r\n\r\n## ⚙️ Funcionalidades Implementadas\r\n\r\n- ✅ Validação na criação de contas: Implementação de regras de negócio para garantir que todas as contas criadas sejam válidas.\r\n- 💸 Pagamentos: Sistema robusto para realizar pagamentos entre usuários, incluindo verificação e confirmação.\r\n- 📧 Envio de e-mail pós-pagamento: Notificações por e-mail enviadas automaticamente após a realização de pagamentos.\r\n- 🔒 Sistema autorizador externo de pagamentos: Integração com um sistema externo para autorização de pagamentos, garantindo segurança e confiabilidade.\r\n\r\n## ⚙️ Configuração do Projeto\r\n\r\n### Pré-requisitos\r\n\r\n- Docker instalado\r\n- Docker Compose instalado\r\n- Java 11 ou superior\r\n- Maven instalado\r\n\r\n### Instruções para Executar o Projeto\r\n\r\n1. Clone este repositório:\r\n    ```sh\r\n    git clone https://github.com/Fioshi/picpay-simp.git\r\n    ```\r\n\r\n2. Configure o arquivo `application.properties` com as informações necessárias para conexão com o banco de dados.\r\n\r\n3. Compile o projeto:\r\n    ```sh\r\n    mvn clean install\r\n    ```\r\n\r\n4. Execute a aplicação utilizando Docker Compose:\r\n    ```sh\r\n    docker-compose up --build\r\n    ```\r\n\r\n5. A aplicação estará disponível em [http://localhost:8080](http://localhost:8080).\r\n\r\n## 📊 Diagrama de Arquitetura\r\n\r\n### Diagrama de Contexto\r\n```mermaid\r\ngraph TD;\r\n    User[Usuário do PicPay];\r\n    BackendAPI[\"Simple PicPay System [Software]\"];\r\n    EmailSystem[\"Sistema de envio de notificação externo [Software]\"];\r\n    AuthSystem[\"Sistema autorizador externo [Software]\"];\r\n\r\n    User --\u003e|Realizará pagamentos via| BackendAPI;\r\n    BackendAPI --\u003e|Envia notificação por| EmailSystem;\r\n    BackendAPI --\u003e|Confirma ou não o pagamento| AuthSystem;\r\n    EmailSystem --\u003e|Envia notificação para| User;\r\n```\r\n\r\n### Diagrama de Container\r\n```mermaid\r\ngraph TD;\r\n    User[Usuário do projeto];\r\n    BackendAPI[\"API de Backend (Java + Springboot)\"];\r\n    Database[\"Banco de Dados (MySQL)\"];\r\n    EmailSystem[\"Sistema de envio de notificação por e-mail\"];\r\n    AuthSystem[\"Sistema de autenticação\"];\r\n\r\n    User --\u003e|Requisição HTTP| BackendAPI;\r\n    BackendAPI --\u003e|📧 Envia notificação usando| EmailSystem;\r\n    BackendAPI --\u003e|🔐 Verifica pagamento usando| AuthSystem;\r\n    Database -.-\u003e|📂 Persiste e retorna dados| BackendAPI;\r\n````\r\n\r\n### Diagrama de Component\r\n```mermaid\r\ngraph TD\r\n    User[Usuário do PicPay] --\u003e|Solicitações HTTP| AccountController\r\n    User --\u003e|Solicitações HTTP| UserController\r\n    User --\u003e|Solicitações HTTP| PaymentController\r\n\r\n    AccountController[Account Controller] --\u003e|Chama para processar dados| AccountService\r\n    UserController[User Controller] --\u003e|Chama para processar dados| UserService\r\n    PaymentController[Payment Controller] --\u003e|Chama para processar dados| PaymentService\r\n\r\n    AccountService[Account Service] --\u003e|Chama para persistir e recuperar dados| AccountRepository\r\n    UserService[User Service] --\u003e|Chama para persistir e recuperar dados| UserRepository\r\n    PaymentService[Payment Service] --\u003e|Chama para persistir e recuperar dados| PaymentRepository\r\n    PaymentService --\u003e|Envia pedido de autorização| ExternalAuthorizationSystem\r\n    PaymentService --\u003e|Envia pedido de notificação| ExternalNotificationSystem\r\n\r\n    AccountRepository[Account Repository] --\u003e|Persistência| Database[MySQL Database]\r\n    UserRepository[User Repository] --\u003e|Persistência| Database[MySQL Database]\r\n    PaymentRepository[Payment Repository] --\u003e|Persistência| Database[MySQL Database]\r\n\r\n    PaymentService --\u003e PaymentValidators[Payment Validators]\r\n\r\n    ExternalNotificationSystem[Sistema de Envio de Notificação Externo]\r\n    ExternalAuthorizationSystem[Sistema Autorizador Externo]\r\n\r\n    subgraph API Backend [Java e Spring Boot]\r\n        AccountController\r\n        UserController\r\n        PaymentController\r\n        AccountService\r\n        UserService\r\n        PaymentService\r\n        AccountRepository\r\n        UserRepository\r\n        PaymentRepository\r\n    end\r\n\r\n    subgraph DatabaseSystem [Sistema de Banco de Dados]\r\n        Database\r\n    end\r\n\r\n    subgraph ExternalSystems [Sistemas Externos]\r\n        ExternalNotificationSystem\r\n        ExternalAuthorizationSystem\r\n    end\r\n```\r\n\r\n## 🔗 Endpoints\r\n\r\nA aplicação possui os seguintes endpoints disponíveis:\r\n\r\n- `POST /user`: Criação de um novo usuário e conta.\r\n- `POST /pagamentos`: Realização de um pagamento.\r\n- `GET /pagamentos/{payee}`: Obtenção de informações de um pelo recebedor do dinhero.\r\n- `GET /pagamentos/{payer}`: Obtenção de informações de um pagamento pelo pagador.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffioshi%2Fjava-picpay-simp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffioshi%2Fjava-picpay-simp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffioshi%2Fjava-picpay-simp/lists"}