Skip to content

O projeto Blue Bank é um projeto final para o PAN Academy.

Notifications You must be signed in to change notification settings

lucaslgr/blue-bank-squad9

Repository files navigation

PROJETO BLUE BANK

📢 O que é o projeto?

O projeto Blue Bank é uma API REST de um banco fictício desenvolvido em Java com framework Spring e serviços da AWS Cloud. O Blue Bank é a entrega do desafio final do treinamento de Java e AWS fornecido pela Gama Academy e pelo Banco PAN.

🔗 Acesse aqui o pdf com a descrição completa do desafio.

🤝 Equipe : L.A.J.Y.M

L. A. J. Y. M.
Lucas Ayanara João Yuri Maxwel

📑 Sumário


🧾 Requisitos para rodar o projeto

Com Docker:

Sem Docker:


🏗️ Rodar o projeto

Com Docker:

  • Gere o .jar da aplicação executando o comando no terminal:

    mvn clean install -Dskiptests
  • Instancie e rode os containers executando o comando no terminal:

    docker-compose up --build --force-recreate

Sem Docker:

  • Gere o .jar da aplicação executando o comando no terminal:

    mvn clean install -Dskiptests
  • Para rodar o .jar vá até a pasta do projeto pelo terminal e rode o comando:

    java -jar -Dspring.profiles.active=localdebug blue-bank-0.0.1-SNAPSHOT.jar
  • Para setar diretamente no Intellij o profile de configurações do application.properties:

    OBS: O profile de application.properties default está com as configurações para rodar utilizando os containers que são levantados no docker-compose.


🗑️ Banco de Dados

  • DER do banco de dados:


🚀 Tecnologias e recursos utilizadas no projeto

  • Jira (Kanban)
  • Java
  • Banco de Dados MySQL
  • Docker
  • Spring Web
  • Spring Security
  • Token JWT
  • Hibernate Validator
  • Swagger v2
  • Spring Cloud AWS
  • Spring Cloud AWS Messaging (SNS)
  • JUnit (Testes unitários)

💥 Requisitos e funcionalidades

  • Obrigatórios da entrega:

    • Planejamento (Metodologias Ágeis):
      • Kanban com todas as tarefas organizadas e responsáveis definidos.
    • Projeto (Backend):
      • Cadastro de clientes.
      • Listagem de clientes.
      • Atualização de clientes.
      • Deletar clientes.
      • Histórico de transações entre contas.
    • Banco de Dados:
      • Tabelas bem estruturadas e populadas com valores para testes.
      • O banco deve ser entregue em script SQL junto ao repositório.
    • Gerais:
      • O código deve ser entregue em um repositório no Github.
      • A API deve ser disponibilizada em ambiente AWS com EC2 e em Beanstalk.
      • A aplicação deve ter um pipeline em Jenkins ou no Aws Build (Foi implementado pelo AWS Build).
      • A aplicação precisa ser configurada no API Gateway da AWS.
      • A aplicação precisa ter no mínimo um endpoint de SNS para cadastro de emails e verificação automática.
      • A aplicação precisa ter no mínimo um Lambda.
      • Liste os endpoints no README.md
      • O Banco deve ser entregue em script SQL junto ao repositório.
  • Extras:

    • Planejamento (Metodologias Ágeis):
      • Criação do backlog com tarefas referentes ao desenvolvimento.
      • Criação do icebox com tarefas extras propostas para implementações futuras.
      • Detalhamento descritivo das tarefas da squad dentro dos seus cards.
      • Formatação Kanban no padrão: icebox, backlog, to do, doing e done.
      • Definição de data de entrega das tarefas nos cards.
      • Definição de responsável pelo card.
      • Priorização dos cards através de tags de relevância.
      • Associação dos cards com os Épicos abaixo para definição de uma data de entrega de cada etapa do projeto.
        • Preparar inicio do projeto
        • Backend
        • Configurar servidor AWS
        • Documentação
        • Banco de dados
        • Apresentação
    • Projeto (Backend):
      • Implementação do Spring Security e Token JWT para autenticação de acesso a endpoints que o cliente precisa estar logado para ter acesso.
      • Implementação de validações de todos campos nos Models e nos DTOs de request utilizando Regex e anotações do Hibernate Validator.
      • Implementação do Swagger v2 para documentação da API e listagem de endpoints.
      • Implementação do docker-compose.yaml e Dockerfile para rodar o banco de dados e a API.
      • Configuração de diferentes profiles de application.properties com variáveis de ambiente para subir o projeto localmente, via Docker, no EC2 (AWS) ou no Beanstalk (AWS).
      • Implementação de testes unitários com JUnit.
    • Banco de Dados:
      • Diagrama de DER do banco de dados.

🔌 Endpoints da API

URL Verbo HTTP Dados
↪️ Retorna todos os clientes.
/api/clientes GET
Header
{
  "Accept" : "application/json"
}
Body
{
}
↪️ Realizar login de um cliente
/api/clientes/login POST
Header
{
  "Content-Type" : "application/json",
  "Accept" : "application/json"
}
Body
{
  "email" : "string",
  "senha" : "string"
}
↪️ Realizar cadastro de um novo cliente
/api/clientes POST
Header
{
  "Content-Type" : "application/json",
  "Accept" : "application/json"
}
Body
{
  "celular": "string",
  "cpf": "string",
  "dataDeNascimento": "2021-12-04T19:12:19.373Z",
  "email": "string",
  "nome": "string",
  "nomeDaMae": "string",
  "nomeDoPai": "string",
  "patrimonio": 0,
  "profissao": "string",
  "rendaMensal": 0,
  "rg": "string",
  "senha": "string",
  "sobrenome": "string",
  "telefone": "string"
}
↪️ Consultar dados de um cliente
/api/clientes/{idCliente} GET
Header
{
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
}
↪️ Atualizar dados de um cliente
/api/clientes/{idCliente} PUT
Header
{
  "Content-Type" : "application/json",
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
  "celular": "string",
  "cpf": "string",
  "dataDeNascimento": "2021-12-04T19:59:18.447Z",
  "email": "string",
  "nome": "string",
  "nomeDaMae": "string",
  "nomeDoPai": "string",
  "patrimonio": 10,
  "profissao": "string",
  "rendaMensal": 1,
  "rg": "string",
  "senha": "string",
  "sobrenome": "string",
  "telefone": "string"
}
↪️ Deletar um cliente
/api/clientes/{idCliente} DELETE
Header
{
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
}
↪️ Cadastrar um endereço para um cliente
/api/clientes/{idCliente}/endereco POST
Header
{
  "Content-Type" : "application/json",
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
  "bairro": "string",
  "cep": "string",
  "cidade": "string",
  "complemento": "string",
  "estado": "string",
  "logradouro": "string",
  "numeroCasa": "string"
}
↪️ Cadastrar uma conta para um cliente
/api/clientes/{idCliente}/conta POST
Header
{
  "Content-Type" : "application/json",
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
  "cpf": "string",
  "senha": "string"
}
↪️ Cliente faz um deposito em uma conta, seja dele ou não
/api/clientes/{idCliente}/deposito POST
Header
{
  "Content-Type" : "application/json",
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
  "numeroContaDestino" : "string",
  "valor" : 10
}
↪️ Cadastra uma nova transação entre contas
/api/clientes/{idCliente}/transacao POST
Header
{
  "Content-Type" : "application/json",
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
  "dataEnvio": "2021-12-04T20:16:11.211Z",
  "dataRecebimento": "2021-12-04T20:16:11.211Z",
  "idContaEmissora": 2,
  "idContaReceptora": 1,
  "senhaContaEmissora": "string",
  "valor": 10
}
↪️ Ver historico de transações de um cliente
/api/clientes/{idCliente}/transacoes GET
Header
{
  "Accept" : "application/json",
  "Authorization" : "Bearer {clienteToken}"
}
Body
{
}
↪️ Cadastra um email de administrador como uma subscription no SNS da AWS para receber notificação de cadastro de novos clientes.
/api/sns/subscricao/{email} POST
Header
{
  "Accept" : "application/json"
}
Body
{
}

🔃 Deploy AWS e links do Swagger UI


About

O projeto Blue Bank é um projeto final para o PAN Academy.

Resources

Stars

Watchers

Forks

Packages

No packages published