API REST bancária desenvolvida com Spring Boot, simulando operações reais de bancos como Itaú e Santander.
A API Bank é uma API RESTful que simula o núcleo de um sistema bancário real. O projeto foi desenvolvido com foco em boas práticas de arquitetura, separando responsabilidades em camadas bem definidas — do jeito que grandes bancos fazem internamente.
- ✅ Cadastro de clientes (com validação de CPF único)
- ✅ Criação de contas bancárias vinculadas a clientes
- ✅ Depósito em conta
- ✅ Saque com validação de saldo insuficiente
- ✅ Transferência entre contas
- ✅ Consulta de saldo
O projeto segue o padrão de arquitetura em camadas:
src/
└── main/
└── java/
└── com.bank.api_bank_g/
├── controller/ → Endpoints REST (ClienteController, ContaController)
├── service/ → Regras de negócio (ClienteService, ContaService)
├── repository/ → Acesso ao banco de dados (JPA Repositories)
└── model/ → Entidades (Cliente, Conta)
| Tecnologia | Versão | Descrição |
|---|---|---|
| Java | 17 | Linguagem principal |
| Spring Boot | 3.x | Framework principal |
| Spring Web | - | Criação dos endpoints REST |
| Spring Data JPA | - | Comunicação com o banco |
| H2 Database | - | Banco de dados em memória |
| Lombok | - | Redução de código boilerplate |
| Maven | - | Gerenciador de dependências |
- Java 17+
- Maven
- IntelliJ IDEA (recomendado)
# Clone o repositório
git clone https://github.com/Mgrsantos/api-bank.git
# Entre na pasta do projeto
cd api-bank
# Rode o projeto
./mvnw spring-boot:runA API estará disponível em: http://localhost:8080
| Método | Rota | Descrição |
|---|---|---|
POST |
/clientes |
Cadastrar novo cliente |
GET |
/clientes |
Listar todos os clientes |
GET |
/clientes/{id} |
Buscar cliente por ID |
POST /clientes
{
"nome": "Gabriela Santos",
"cpf": "123.456.789-00",
"email": "gabriela@email.com"
}| Método | Rota | Descrição |
|---|---|---|
POST |
/contas |
Criar conta para um cliente |
GET |
/contas/{id} |
Consultar saldo |
POST |
/contas/{id}/depositar |
Realizar depósito |
POST |
/contas/{id}/sacar |
Realizar saque |
POST |
/contas/transferir |
Transferir entre contas |
# Criar conta
POST /contas?clienteId=1&numeroConta=0001-1
# Depositar R$500
POST /contas/1/depositar?valor=500
# Sacar R$200
POST /contas/1/sacar?valor=200
# Transferir R$100 da conta 1 para conta 2
POST /contas/transferir?idOrigem=1&idDestino=2&valor=100O projeto utiliza o H2 Database (banco em memória), ideal para desenvolvimento e testes.
Acesse o console do H2 em: http://localhost:8080/h2-console
| Campo | Valor |
|---|---|
| JDBC URL | jdbc:h2:mem:bankdb |
| Username | sa |
| Password | (vazio) |
- Autenticação com Spring Security e JWT
- Histórico de transações
- Migração para PostgreSQL
- Documentação com Swagger/OpenAPI
- Testes unitários com JUnit
Gabriela Rondon Feito com 💜 por Gabriela Santos