Git Product home page Git Product logo

projeto_final's Introduction

BlueBank API by BugBusters

Sobre o Projeto

Este projeto consiste em uma API de banco digital desenvolvida para o bootcamp Gama Pan Academy, uma parceria da Gama como o Banco Pan.

A API foi construída em Java utilizando a framework Spring Boot com Maven e suas dependências para a modelagem do problema. Foi utilizado banco de dados relacional MySQL, no qual as tabelas e relações são criadas pela aplicação em si, usando as notações fornecidas pelo Spring Boot. A aplicação foi subida para a AWS utilizando EC2. Uma função lambda foi criada para realizar o rendimento da conta dos clientes periódicamente. A organização dos diretórios e endpoints são listados mais a frente.

O quadro Kanban do projeto é encontrado no Trello. A aplicação está disponível no github e na plataforma AWS. Uma esteira em jenkins foi usada para realizar deploy automatizado do repositório no github para a nuvem.

Organização do Diretório do Projeto

├── Projeto_Final                                                        // Diretório Principal
    ├── src                                                              // Diretório com os códigos fontes
        ├── main
            └── java/com/bugsbuster/projectCaptainTech/                  // Diretório com os arquivos java
        	    ├── config                                               // Pasta de arquivos de configurações
​                        └── AwsSnsConfig.java                                // Configuração do Bean para executar o SNS da amazon
​                    ├── controller                                           // Contém as classes de controle da aplicação (endpoints)
​                        ├── ContaController.java                             // Endpoints para contas do banco
​                        ├── PessoaFisicaController.java                      // Endpoints para clientes pessoa física
​                        ├── PessoaJuridicaController.java                    // Endpoints para clientes pessoa jurídica
​                        └── TransferenciaController.java                     // Endpoints para transferência
​        	    ├── doc                                                  // Pasta de documentação do swagger
​                        └── SwaggerConfig.java                               // Configurações para gerar a documentação do swagger
​                    ├── model                                                // Contém as classes de modelagem do sistema
​                        ├── Cliente.java                                     // Classe super abstrada para os tipos de cliente
​                        ├── Conta.java                                       // Classe que modela uma conta
​                        ├── Endereco.java                                    // Classe que modela os endereços dos clientes
​                        ├── EnumEstado.java                                  // Enumera as siglas dos estados para usar no endereço
​                        ├── PessoaFisica.java                                // Classe especialização de cliente para pessoa física
​                        ├── PessoaJuridica.java                              // Classe especialização de cliente para pessoa jurídica
​                        └── Transferencia.java                               // Classe que modela as transferências entre contas
​        	    ├── repository                                           // Diretório que contem as classes de conexão com o MySQL
​                        ├── ContaRepository.java                             // Repositório das contas
​                        ├── EnderecoRepository.java                          // Repositório dos Endereços
​                        ├── PessoaFisicaRepository.java                      // Repositório de pessoa Física
​                        ├── PessoaJuridicaRepository.java                    // Repositório de pessoa jurídica
​                        └── TransferenciaRepository.java                     // Repositórios das transferências
​                    ├── service                                              // Implementações de comportamento em meio a solicitações
                         ├── exception                                        // Pacote de tratamento de exceções customizados
                             ├── AppExceptionHandler.java
                             └── EntityNotFoundException.java
                         ├── ContaService.Java                                // Comportamento das solicitações de conta
                         ├── EnderecoService.java                             // Comportamento das solicitações de Endereço
                         ├── PessoaFisicaServiceImpl.java                     // Comportamento das solicitações de pessoa física
                         ├── PessoaJuridicaServiceImpl.java                   // Comportamento das solicitações de pessoa jurídica
                         └── TransferenciaService.java                        // Comportamento das solicitações de Transferência
                     └── ProjectCaptainTechApplicationTests.java              // Classe que contem a main
            └── resources
                ├── application.properties                                    // Contém as configurações de BD da aplicação
        └── test/java/com/bugsbuster/projectCap                               // Caminho para códigos de teste
            └── ProjectCaptainTechApplicationTests.java         	          // teste do classe principal
   ├── target
   ├── .gitattributes
   ├── BlueBank-Diagram.asta
   ├── BlueBank-mysql.mwb
   ├── DB.sql                                                                // Script para popular o banco de dados
   ├── READ.md                                                               // ---> Você está aqui
   ├── mvnw
   ├── mvnw.cmd
   └── pom.xml                                                               // Arquivo pom com as configurações do Maven

Diagrama de Banco de Dados

Diagrama de Classes

Diagrama de Objeto

Endpoints da Aplicação

Contas
  ├── GET "/contas" -> Retorna todas as contas
  └── GET "/contas/{numero} -> Retorna uma conta a partir do número
Pessoa Física
  ├── GET "/clientePF" -> Retorna todos os clientes pessoa física
  ├── GET "/clientePF/{id}" -> Retorna um cliente PF pelo id
  ├── GET "/clientePF/cpf/{cpf}" -> Retorna um cliente PF pelo cpf
  ├── GET "/clientePF/nome/{nome}" -> Retorna clientes em que o nome contenha o que foi passado
  ├── GET "/clientePF/ocupacao/{ocupacao}" -> Retorna clientes PF por ocupação
  ├── GET "/clientePF/telefone/{telefone}" -> Retorna cliente pf pelo telefone
  ├── POST "/clientePF" -> Cria um cliente pessoa física passado por json
  ├── POST "/clientePF/mensagem" -> Envia uma mensagem  para os clientes subscritos no email
  ├── PUT "/clientePF/atualizar" -> Atualiza os dados de uma cliente pessoa física
  └── PUT "/clientePF/desativar/{id}" -> Desativa o cliente de id passado
Pessoa Jurídica
  ├── GET "/clientePJ" -> Retorna todos os clientes PJ
  ├── GET "/clientePJ/{id}" -> Retorna um cliente PJ pelo id
  ├── GET "/clientePJ/cnpj/{cnpj}" -> Retorna um cliente PJ pelo cnpj
  ├── GET "/clientePJ/inscricao/{inscricao}" -> Retorna cliente PJ pela inscrição estadual
  ├── GET "/clientePJ/nf/{nf}" -> Retorna clientes PJ em que o nome fantasia contenha a string passada
  ├── GET "/clientePJ/razao/{razao}" -> Retorna cliente PJ pela razão social
  ├── GET "/clientePJ/telefone/{telefone}" -> Retorna cliente PJ pelo número de telefone
  ├── POST "/clientePJ" -> Cria um cliente PJ passado por Json
  ├── POST "/clientePJ/mensagem" -> Envia uma mensagem para os clientes subscritos no email
  ├── PUT "/clientePJ/atualizar" -> Atualiza um cliente PJ
  └── PUT "/clientePJ/desativar/{id}" -> Desativa um cliente PJ
Transferencias
  ├── GET "/transferencias" -> Retorna todas as transferências do Banco
  ├── GET "/transferencias/destino/{destino}" -> Retorna transferências pela conta de destino passada (de onde entra dinheiro)
  ├── GET "/transferencias/historico/{conta}" -> Retorna todas as transferências de uma conta
  ├── GET "/transferencias/ordenadas/{conta}" -> Retorna últimas 3 transferências ordenadas
  ├── GET "/transferencias/origem/{origem}" -> Retornas tranferência pela conta de origem passada (de onde saí dinheiro)
  └── POST "/transferencias" -> Adiciona novas transferências

Também é possível ver a documentação de Endpoints no swagger, e acessando o endpoint "/swagger-ui.html".

Grupo de Desenvolvedores BugBusters:

Bruno Claudino Matias Charllyson Souza Paulo Queiroz Jader Greiner Tassio Linhares
TechLead Eng. Dados Developer Developer Eng. Cloud

**Obs: ** Clique nas imagens para os respectivos LinkedIns.

Turma 1 - Squad 5 - Bugbusters

projeto_final's People

Contributors

brunoclaudino avatar tml45 avatar charllysonsouza avatar jadergreiner avatar hawkkawa 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.