Este projeto é uma implementação simples de uma API com dois endpoints (GET /balance
e POST /event
), conforme especificado no desafio técnico da EBANX.
A estrutura do projeto foi organizada da seguinte forma:
ebanx-assignment/
├── src/
│ ├── controllers/
│ │ ├── balanceController.js
│ │ └── eventController.js
│ ├── services/
│ │ └── eventService.js
│ ├── routes/
│ │ └── index.js
│ ├── app.js
│ └── server.js
├── test/
│ ├── balance.test.js
│ └── event.test.js
├── .gitignore
├── package.json
└── README.md
src/
: Diretório principal do código fonte.controllers/
: Contém os controladores que lidam com as requisições HTTP.balanceController.js
: Controlador para o endpointGET /balance
.eventController.js
: Controlador para o endpointPOST /event
.
services/
: Contém a lógica de negócios.eventService.js
: Serviço que processa eventos.
routes/
: Define as rotas da API e mapeia para os controladores.index.js
: Arquivo de roteamento principal.
app.js
: Configura o aplicativo Express e importa as rotas.server.js
: Inicializa o servidor e escuta na porta especificada.
test/
: Contém os testes unitários e de integração.balance.test.js
: Testes para o endpointGET /balance
.event.test.js
: Testes para o endpointPOST /event
.
.gitignore
: Define quais arquivos e diretórios devem ser ignorados pelo Git.package.json
: Arquivo de configuração do npm que lista as dependências e scripts do projeto.README.md
: Documentação do projeto.
- Node.js instalado (recomenda-se a versão LTS)
- npm (gerenciador de pacotes do Node.js)
-
Clonar o repositório:
git clone https://github.com/emernuness/api-test-ebanx.git cd ebanx-assignment
-
Instalar dependências:
npm install
-
Iniciar o servidor:
npm start
O servidor irá rodar na porta 3000 por padrão. Você pode acessar os endpoints em
http://localhost:3000/balance
ehttp://localhost:3000/event
. -
Rodar os testes:
npm test
Isso executará os testes definidos em
test/balance.test.js
etest/event.test.js
.
- Descrição: Retorna o saldo atual.
- Resposta:
{ "balance": 100 }
- Descrição: Cria um novo evento.
- Corpo da Requisição:
{ "type": "credit", "amount": 50 }
- Resposta:
{ "type": "credit", "amount": 50 }
A estrutura modular separa as responsabilidades do código, facilitando a manutenção e escalabilidade do projeto:
- Controladores: Lidam com as requisições HTTP e chamam os serviços necessários.
- Serviços: Contêm a lógica de negócios e podem ser facilmente testados e reutilizados.
- Rotas: Definem os endpoints da API e mapeiam para os controladores.
Utilizei Jest e Supertest para garantir que os endpoints funcionem conforme esperado. Isso ajuda a prevenir regressões e mantém a qualidade do código.
Mantive o código simples e objetivo, atendendo aos requisitos sem adicionar complexidade desnecessária.
Seguindo as instruções, não utilizei banco de dados ou qualquer mecanismo de persistência, mantendo tudo em memória para simplicidade.