API REST de sistema bancário desenvolvida em Java com Spring Boot, simulando operações bancárias reais como cadastro de usuários, autenticação JWT, gerenciamento de contas, Pix, transferências, depósitos, saques, extratos e relatórios financeiros.
Projeto criado com foco em estudo de desenvolvimento Back-End, arquitetura em camadas, segurança com Spring Security e boas práticas de desenvolvimento.
- Java 21
- Spring Boot 3
- Spring Security
- JWT (JSON Web Token)
- Refresh Token
- Spring Data JPA
- Hibernate
- MySQL
- Docker
- Docker Compose
- Bean Validation
- Swagger / OpenAPI
- JUnit 5
- MockMvc
- ViaCEP API
- Cadastro de usuário
- Validação de CPF
- Validação de telefone
- Validação de idade mínima
- Criptografia de senha com BCrypt
- Login com JWT
- Refresh Token
- Logout invalidando Refresh Token
Cada usuário possui uma conta bancária criada automaticamente.
- ID
- Agência
- Número da conta
- Chave Pix automática
- Saldo
- Status
- Data de criação
- CEP cadastrado
- Endereço obtido via ViaCEP
- Consultar conta
- Bloquear conta
- Desbloquear conta
- Encerrar conta
Conta bloqueada:
-
Não pode realizar:
- Pix
- Transferências
- Saques
Conta encerrada:
- Não pode realizar movimentações
- Encerramento somente com saldo igual a R$ 0,00
- Pix por chave Pix
- Validação de senha
- Limite por transação
- Limite diário
- Não permite Pix para a própria conta
- Conta precisa estar ativa
- Saldo suficiente
- Transferência entre contas
- Validação de senha
- Limite por transação
- Não permite transferência para a própria conta
- Saldo suficiente
- Conta ativa
- Depósito em conta própria
- Limite máximo por operação
- Validação de senha
- Saque em conta própria
- Validação de senha
- Saldo suficiente
- Limite máximo por operação
- Conta ativa
Consulta de movimentações financeiras.
- Tipo da transação
- Valor
- Descrição
- Data
- Conta origem
- Conta destino
- Saldo anterior
- Saldo posterior
- Paginação
- Ordenação
- Filtro por período
Exemplo:
GET /transacoes/extrato?inicio=2026-06-01&fim=2026-06-30Geração de indicadores financeiros da conta.
Retorna:
- Saldo atual
- Total recebido no mês
- Total enviado no mês
- Saldo movimentado no mês
- Quantidade de Pix realizados
A API consulta automaticamente o endereço do usuário a partir do CEP cadastrado.
Exemplo de retorno:
{
"cep": "55730000",
"bairro": "",
"localidade": "Bom Jardim",
"uf": "PE",
"estado": "Pernambuco",
"regiao": "Nordeste"
}Caso o ViaCEP esteja indisponível:
- A consulta da conta continua funcionando
- Apenas os campos de endereço retornam nulos
A aplicação utiliza:
- Spring Security
- JWT Authentication
- Refresh Token
- BCrypt Password Encoder
Fluxo:
Login
↓
Access Token
↓
Acesso aos endpoints protegidos
↓
Refresh Token
↓
Novo Access Token
Após iniciar a aplicação:
http://localhost:8080/swagger-ui.html
A documentação inclui:
- Exemplos de requisição
- Exemplos de resposta
- Exemplos de erros
- Regras de negócio
docker compose up -ddocker compose downO projeto possui:
- Registro
- Login
- Refresh Token
- Logout
- Consulta
- Bloqueio
- Desbloqueio
- Encerramento
- Pix
- Transferência
- Saque
- Depósito
- Extrato
- Relatório mensal
- Consulta
- Bloqueio
- Desbloqueio
- Encerramento
- Pix
- Transferência
- Saque
- Depósito
src/main/java/com/jks/bank
├── cliente
├── configuracoes
├── controles
├── dto
├── entidades
├── exceptions
├── mapeamento
├── repositorios
└── servicos
Este projeto foi desenvolvido para praticar:
- Programação Orientada a Objetos
- Spring Boot
- Spring Security
- JWT
- Persistência com JPA/Hibernate
- Testes automatizados
- Integrações externas
- Docker
- Documentação de APIs
- Arquitetura em camadas
- Lógica de negócio bancária
Jakson José
Projeto desenvolvido para estudos, evolução profissional e composição de portfólio.