Skip to content

Latest commit

 

History

History
98 lines (76 loc) · 4.81 KB

README.md

File metadata and controls

98 lines (76 loc) · 4.81 KB

Bem-vindo ao Food Delivery

A API Food Delivery é um e-commerce simples que oferece meios de acesso através de autenticação JWT utilizando bearer token. Nele, foi realizada a proposta de regra de negócio para definir etapas de progressão da empresa. Cada endpoint oferece o momento em que a empresa se encontra em relação à quantidade de usuários cadastrados e à quantidade de produtos por usuário em cada etapa. A API também conta com uma documentação interna feita com o Swagger, que traz facilidade e rapidez ao acesso dos endpoints da aplicação.

Sumário

Contexto

O Food Delivery é uma ferramenta que acessa a bases de dados, é permite aos usuários:

  • Fazer login;
  • Cadastrar um novo usuário;
  • Buscar por produtos;
  • Criar novos produtos;
  • Criar ordem de pedido;
  • Atualizar uma ordem de pedido;
  • Atualizar um produto;
  • Deletar um pedido;
  • Deletar um produto;

Quando logado é possivel

  • Buscar por produtos;
  • Criar novos produtos;
  • Criar ordem de pedido;
  • Atualizar uma ordem de pedido;
  • Atualizar um produto;
  • Deletar um pedido;
  • Deletar um produto;

Tecnologias e Ferramentas Utilizadas

Este projeto utiliza as seguintes tecnologias e ferramentas:

  • NodeJS | Plataforma de execução runtime baseda em javascript.
  • MongoDB | Banco de dados NoSQL não-relacional.
  • Moongose | ODM Object-documente-Mapper para MongoDB
  • Express | Framework para nodejs

O Node.js foi utilizado com o intuito de obter os benefícios da escalabilidade e eficiência, pois ele é capaz de lidar com vários tráfegos sem bloqueio e lida com solicitações com baixo consumo de recursos. O MongoDB foi introduzido pensando em desempenho e flexibilidade. Este conjunto proporciona uma maior facilidade de adaptação e evolução do aplicativo, sem contar também que o MongoDB trabalha com documentos no formato JSON, que é um formato nativo em algumas linguagens. O Mongoose foi implementado por ser uma biblioteca poderosa e flexível que simplifica a interação com o MongoDB e adiciona recursos úteis, como validação de dados, tratamento de relacionamentos e ganchos personalizados. O Express é um framework para o Node.js que permite construir aplicações web robustas e escaláveis de forma mais fácil e rápida.

Instalação e Execução

Download do projeto

git clone git@github.com:JonathanProjetos/Food-Delivery.git

Arquivo env

  • Dentro da pasta Food-Delivery existe o arquivo .env.example nele será nescessário remover o .example e oferecer a url do MongoDB, e uma senha para o Json-Web-Token.

Instalar dependências

cd Food-Delivery
docker compose up -d

obs: O comando "docker compose up -d" vai instalar as dependências e tornar a aplicação disponível na porta 3001.

Adicionar os Produtos

  • Após subir os conteiners docker, abra o terminal e rode os comandos abaixo.
docker exec -it food_delivery bash
npm run products:import

obs: Caso queira remover os produtos rode:
npm run products:destroy

Tests

cd Food-Delivery
npm test
ou 
npm run test:coverage

Deploy

  • Foi realizado o deploy da aplicação no Railway. Logo abaixo, está o link de acesso para a aplicação através do Swagger.

Swagger

  • Foi implementada a documentação por parte do Swagger, que possibilita testar a aplicação de forma mais rápida e intuitiva.
  • O link para a documentação é DOC
  • Alguns end-points séra necessessário oferecer o token para o Authorization no swagger. O token será disponibilizado quando for feito o login é como resposta terá o token.

Git, GitHub e Histórico de Commits

Este projeto utilizou a Especificação de Commits Convencionais, com alguns tipos da convenção Angular. Além disso, foi utilizado o pacote conventional-commit-cli para ajudar a seguir a convenção de commits. É importante utilizar a convenção de commits em projetos para manter o histórico de commits organizado e facilitar a leitura e o entendimento do que foi desenvolvido.

Lint

  • O projeto foi desenvolvido seguindo os padrões de Clean Code especificados pelo Lint da Trybe.