https://github.com/brunoevangelista17/saque-caixa-eletronico-rota
Esta API simula o funcionamento de um caixa eletrônico. Ela recebe um valor de saque desejado e retorna a quantidade de cédulas de cada valor necessárias para compor esse saque, utilizando a menor quantidade de cédulas possível. As cédulas consideradas são: 100, 50, 20, 10, 5 e 2.
https://github.com/brunoevangelista17/saque-caixa-eletronico-rota
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (1.4%) to scientific vocabulary
Repository
Esta API simula o funcionamento de um caixa eletrônico. Ela recebe um valor de saque desejado e retorna a quantidade de cédulas de cada valor necessárias para compor esse saque, utilizando a menor quantidade de cédulas possível. As cédulas consideradas são: 100, 50, 20, 10, 5 e 2.
Basic Info
- Host: GitHub
- Owner: BrunoEvangelista17
- Language: JavaScript
- Default Branch: main
- Size: 672 KB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
- Releases: 0
Metadata Files
README.md
Projeto Desafio Técnico Morada.ai: Caixa Eletrônico API
Descrição
Esta API simula o funcionamento de um caixa eletrônico. Ela recebe um valor de saque desejado e retorna a quantidade de cédulas de cada valor necessárias para compor esse saque, utilizando a menor quantidade de cédulas possível. As cédulas consideradas são: 100, 50, 20, 10, 5 e 2.
Tecnologias Utilizadas
- JavaScript
- Node.js
- Express
Principais Desafios
- Tornar o projeto de fácil compreensão: A implementação foi feita de forma clara e modular, com comentários explicativos no código para facilitar o entendimento.
- Tornar o projeto eficiente: A lógica implementada calcula a quantidade mínima de cédulas necessárias de maneira eficiente, com o mínimo de linhas possivel porém com o resultado desejado.
- Retornar pela rota o valor obtido pela lógica: O valor de saque é processado e retornado diretamente pela rota
/api/saque, visto que não tinha familiaridade a rotas que não fizessem requisições ao banco de dados. - Criar um passo a passo coeso e claro para o usuário: O guia de execução foi elaborado para ser seguido facilmente por qualquer usuário, desde a instalação até a realização das requisições.
Como Executar o Código
Pré-requisitos
- Node.js instalado
Passo a Passo
Instalar Dependências
- Abra o terminal da sua IDE e navegue até a pasta onde está localizado o arquivo
package.json. - Execute o comando abaixo para instalar as dependências do projeto:
bash npm install
- Abra o terminal da sua IDE e navegue até a pasta onde está localizado o arquivo
Iniciar o Servidor
- Após a instalação do pacote Express, execute o comando abaixo para iniciar o servidor:
bash node index.js
- Após a instalação do pacote Express, execute o comando abaixo para iniciar o servidor:
Fazer uma Requisição
- Utilize um cliente HTTP como
curlou Postman para fazer uma requisição ao endpoint. Exemplo de comando usandocurl:bash curl -X POST -H "Content-Type: application/json" -d '{"valor": 380}' http://localhost:3000/api/saque
- Utilize um cliente HTTP como
Receber a Resposta
- Você deve receber uma resposta similar a esta:
json { "100": x, "50": y, "20": z, "10": a, "5": b, "2": c } - Onde
x,y,z,a,becsão inteiros representando a quantidade de cada cédula necessária para o valor de saque solicitado.
- Você deve receber uma resposta similar a esta:
Estrutura do Projeto
O projeto possui a seguinte estrutura:
index.js: Arquivo principal que contém a lógica da API e a inicialização do servidor.
Observações
- Certifique-se de que a porta 3000 não está sendo utilizada por outro serviço para evitar conflitos.
- Caso precise alterar a porta do servidor, modifique a constante
PORTno arquivoindex.js.
Owner
- Login: BrunoEvangelista17
- Kind: user
- Repositories: 1
- Profile: https://github.com/BrunoEvangelista17
GitHub Events
Total
- Member event: 1
- Push event: 1
- Pull request event: 1
- Create event: 1
Last Year
- Member event: 1
- Push event: 1
- Pull request event: 1
- Create event: 1
Dependencies
- accepts 1.3.8
- array-flatten 1.1.1
- body-parser 1.20.2
- bytes 3.1.2
- call-bind 1.0.7
- content-disposition 0.5.4
- content-type 1.0.5
- cookie 0.6.0
- cookie-signature 1.0.6
- debug 2.6.9
- define-data-property 1.1.4
- depd 2.0.0
- destroy 1.2.0
- ee-first 1.1.1
- encodeurl 1.0.2
- es-define-property 1.0.0
- es-errors 1.3.0
- escape-html 1.0.3
- etag 1.8.1
- express 4.19.2
- finalhandler 1.2.0
- forwarded 0.2.0
- fresh 0.5.2
- function-bind 1.1.2
- get-intrinsic 1.2.4
- gopd 1.0.1
- has-property-descriptors 1.0.2
- has-proto 1.0.3
- has-symbols 1.0.3
- hasown 2.0.2
- http-errors 2.0.0
- iconv-lite 0.4.24
- inherits 2.0.4
- ipaddr.js 1.9.1
- media-typer 0.3.0
- merge-descriptors 1.0.1
- methods 1.1.2
- mime 1.6.0
- mime-db 1.52.0
- mime-types 2.1.35
- ms 2.0.0
- ms 2.1.3
- negotiator 0.6.3
- object-inspect 1.13.2
- on-finished 2.4.1
- parseurl 1.3.3
- path-to-regexp 0.1.7
- proxy-addr 2.0.7
- qs 6.11.0
- range-parser 1.2.1
- raw-body 2.5.2
- safe-buffer 5.2.1
- safer-buffer 2.1.2
- send 0.18.0
- serve-static 1.15.0
- set-function-length 1.2.2
- setprototypeof 1.2.0
- side-channel 1.0.6
- statuses 2.0.1
- toidentifier 1.0.1
- type-is 1.6.18
- unpipe 1.0.0
- utils-merge 1.0.1
- vary 1.1.2
- express ^4.19.2