Uma API REST de simulação bancária desenvolvida com Node.js, TypeScript, Express e PostgreSQL via Knex.js.
⚠️ Projeto em andamento — a gestão de contas bancárias (accounts) ainda está sendo implementada.
- Node.js
- TypeScript
- Express
- Knex.js — Query Builder + Migrations
- PostgreSQL
- Zod — Validação de dados
- Bcrypt — Criptografia de senhas
- Node.js 18+
- PostgreSQL rodando localmente ou em nuvem
git clone https://github.com/rafaelAmora/banksim-api.git
cd banksim-apinpm installCrie um arquivo .env na raiz do projeto:
DB_HOST=localhost
DB_PORT=5432
DB_USER=seu_usuario
DB_PASSWORD=sua_senha
DB_NAME=banksimnpm run knex migrate:latestnpm run devO servidor irá rodar em http://localhost:3333.
| Método | Rota | Descrição |
|---|---|---|
POST |
/users |
Cria um novo usuário |
GET |
/users |
Lista todos os usuários |
PUT |
/users/:id |
Atualiza dados de um usuário |
Body:
{
"name": "João Silva",
"email": "joao@email.com",
"password_hash": "minhasenha123"
}Resposta de sucesso (200):
"user created successfully!"Erros possíveis:
400— E-mail já cadastrado400— Dados inválidos (Zod)
Resposta de sucesso (200):
[
{
"id": 1,
"name": "João Silva",
"email": "joao@email.com",
"password_hash": "$2b$10$...",
"created_at": "2025-03-19T00:00:00.000Z",
"updated_at": "2025-03-19T00:00:00.000Z"
}
]Body:
{
"password_hash": "senhaAtual123",
"name": "João Atualizado",
"email": "novo@email.com",
"password_new": "novaSenha456"
}O campo
password_hashé obrigatório para validar a identidade do usuário. Os demais campos são opcionais.
Resposta de sucesso (200): sem corpo
Erros possíveis:
400— Usuário não encontrado400— Senha incorreta400— Dados inválidos (Zod)
A API conta com um middleware global de erros que trata:
AppError— erros de negócio com status HTTP customizávelZodError— erros de validação de dados com detalhes dos campos- Erros genéricos — retorna
500com a mensagem do erro
- CRUD de usuários
- Hash de senhas com bcrypt
- Validação com Zod
- Tratamento centralizado de erros
- CRUD de contas bancárias (accounts)
- Associação entre usuários e contas
- Operações bancárias (depósito, saque, transferência)
- Autenticação com JWT
Feito com dedicação como primeiro projeto de API REST independente.