Skip to content

O projeto "API Store Manager" é um projeto que abrange uma API RESTful desenvolvida com Node.js, Express e MySQL, gerenciada eficazmente por meio de contêineres Docker. Esta solução oferece funcionalidades essenciais, validação de dados e operações de CRUD

Notifications You must be signed in to change notification settings

ElieltonRamos/project-api-store-manager

Repository files navigation

Boas-vindas ao repositório do projeto API Store Manager

uma descricao uma descricao uma descricao uma descricao

Este é um projeto desenvolvido como parte do curso de Desenvolvimento Full Stack da Trybe. O Store Manager é uma aplicação que gerencia produtos e vendas em uma loja, oferecendo endpoints para listar, cadastrar, atualizar e deletar produtos e vendas.

A aplicação foi desenvolvida utilizando Node.js e express.js para o backend e MySQL como banco de dados. Ela fornece uma API RESTful que permite aos usuários realizar operações CRUD (Create, Read, Update, Delete) em produtos e vendas.

🐳 Docker

O Docker foi utilizado neste projeto para facilitar a configuração e execução do ambiente de desenvolvimento. Com o Docker, é possível encapsular a aplicação, suas dependências e o banco de dados em contêineres isolados, garantindo que ela possa ser executada de maneira consistente em diferentes ambientes.

O arquivo docker-compose.yml define a configuração dos contêineres necessários para o projeto, incluindo o contêiner do banco de dados MySQL e o contêiner da aplicação Node.js. Com um único comando, os contêineres podem ser inicializados, permitindo que o ambiente de desenvolvimento seja configurado de forma rápida e fácil.

Tecnologias Utilizadas

Node JS

JavaScript

Docker

MySQL

Express JS

Mocha

Índice

Ambiente de Desenvolvimento

Para desenvolver e executar esta aplicação, é necessário configurar um ambiente com as seguintes ferramentas:

Docker: Utilizamos o Docker para empacotar e isolar a aplicação em contêineres, garantindo uma implantação consistente e fácil gerenciamento de dependências.

Node.js: A aplicação é desenvolvida em Node.js, uma plataforma de tempo de execução JavaScript, e é necessária para executar o código.

Docker Compose: O Docker Compose é uma ferramenta que simplifica a definição e o gerenciamento de serviços multi-contêiner em um único arquivo, ideal para orquestrar contêineres relacionados à aplicação.

Certifique-se de instalar e configurar essas ferramentas em seu ambiente de desenvolvimento antes de iniciar o projeto.

Instalação

Clone este repositório:

git clone git@github.com:ElieltonRamos/project-api-store-manager.git

Navegue até o diretório do projeto:

cd project-api-store-manager

Instale as dependências:

npm install

Inicie o docker compose:

docker compose up -d --build

Inicie a aplicação:

O container do node ja esta configurado para deixar a apricação online automaticamente, caso queira ver os logs da apricação, execute o seguinte comando

docker logs -f store_manager

Testes

O projeto conta com testes que verificam o funcionamento de cada rota da API, os testes foram escritos com a biblioteca MOCHA, nao e necessario que o docker compose tenha sido executado para que os testes funcionem, cada teste esta isolado com stubs(mocks).

Para executar os testes siga os seguintes passos:

Abra o terminal na raiz do projeto

Execute o comando:

npm test

Verifique a saida dos testes no seu terminal

O projeto apresenta uma cobertura de testes de 100% das funções criadas, para verificar isso, você pode executar o seguinte comando:

npm run test:coverage

Uso

Explore as rotas essenciais desta API, operações de CRUD e funcionalidades de pesquisa para uma administração eficaz de vendas e produtos.

  1. Listar Produtos

Endpoint: GET /products e GET /products/:id Descrição: GET /products retorna todos os produtos ordenados por ID crescente. GET /products/:id retorna apenas o produto com o ID especificado. Testes: Deve ser testada a funcionalidade de listagem de todos os produtos e de um produto específico.

  1. Listar Vendas

Endpoint: GET /sales e GET /sales/:id Descrição: GET /sales retorna todas as vendas ordenadas por saleId e productId. GET /sales/:id retorna apenas a venda com o ID especificado. Testes: Devem garantir que as vendas sejam listadas corretamente e que a ordem de classificação seja conforme especificado.

  1. Cadastrar Produtos

Endpoint: POST /products Descrição: Cria um novo produto no banco de dados com base nos dados fornecidos no corpo da requisição. Testes: Devem validar se o produto é criado corretamente no banco de dados.

  1. Validações para o Cadastro de Produtos

Descrição: Deve retornar mensagens de erro para requisições com dados inválidos. Testes: Devem garantir que as validações ocorram corretamente.

  1. Cadastrar Vendas

Endpoint: POST /sales Descrição: Cria uma nova venda no banco de dados com base nos dados fornecidos no corpo da requisição. Testes: Devem validar se a venda é criada corretamente no banco de dados.

  1. Validações para o Cadastro de Vendas

Descrição: Deve retornar mensagens de erro para requisições com dados inválidos. Testes: Devem garantir que as validações ocorram corretamente.

  1. Atualizar um Produto

Endpoint: PUT /products/:id Descrição: Atualiza as informações de um produto com o ID especificado no banco de dados. Testes: Devem garantir que as informações do produto sejam atualizadas corretamente.

  1. Deletar um Produto

Endpoint: DELETE /products/:id Descrição: Remove um produto com o ID especificado do banco de dados. Testes: Devem garantir que o produto seja removido corretamente do banco de dados.

  1. Deletar uma Venda

Endpoint: DELETE /sales/:id Descrição: Remove uma venda com o ID especificado do banco de dados.

  1. Atualizar a Quantidade de um Produto em uma Venda

Endpoint: /sales/:saleId/products/:productId/quantity Descrição: Atualiza a quantidade de um produto vendido na venda especificada.

  1. Pesquisar Produtos

Endpoint: GET /products/search Descrição: Retorna todos os produtos no banco de dados que contenham o termo especificado em seus nomes. Testes: Devem garantir que a pesquisa funcione corretamente, incluindo casos em que nenhum produto seja encontrado.

Estrutura do Projeto

A seguir esta explicada a estrutura de pastas do projeto

project-api-store-manager/ : A pasta raiz do projeto.
├── node_modules/ : Contém as dependências da aplicação.
├── tests/ : Contém os testes do projeto.
├── src/ : O diretório principal do código-fonte da aplicação, onde estão localizados todas as camadas da apricação e o arquivo do servidor
│ ├── middlewares/
│ ├── models/
│ ├── routes/
│ ├── services/
│ ├── controllers/
│ ├── utils/
│ ├── app.js: Arquivo que configura o express/
│ ├── server.js: Arquivo que inicia o express/
├── package.json : Descreve as dependências e configurações do projeto.
├── README.md : A documentação do projeto.
├── docker-compose.yml : Utilizado para configurar e executar a aplicação em contêineres Docker.
├── DockerFile : Contém instruções para a criação de uma imagem Docker para a aplicação.
├── sql : Um arquivo SQL usado para preencher o banco de dados com dados iniciais.
├── images-readme : Pasta contendo imagens do readme.
├── .mocharc.json : Configurações para testes com o framework mocha.
├── .dockerignore : Configuração para que o docker ignore alguns arquivos.
├── .gitignore : Configuração para que o git(Git Hub) ignore alguns arquivos.
├── .eslintrc.json : Configuração do linter, biblioteca para manter padrão de codico.

Contato

Elielton Ramos

Envie-me um e-mail Linkedin

Contribuição

Este projeto foi desenvolvido durante meu curso na Trybe com base no projeto 'Store Manager'. A Trybe é uma escola de programação que tem compromisso com o sucesso profissional. O projeto 'Store Manager' é parte do módulo de Back-End e envolve a criação de uma API com Express, Node, Docker e MySQL.

Licença

Código Aberto (Open Source)

Este projeto é de código aberto e está disponível para toda a comunidade. Fique à vontade para explorar, clonar e contribuir para o projeto.

Agradecimentos

Sou grato à Trybe por proporcionar esse desafio enriquecedor e pela oportunidade de aprimorar minhas habilidades como desenvolvedor. Estou empolgado para aplicar os conhecimentos adquiridos em projetos futuros e continuar minha jornada de desenvolvedor web.

About

O projeto "API Store Manager" é um projeto que abrange uma API RESTful desenvolvida com Node.js, Express e MySQL, gerenciada eficazmente por meio de contêineres Docker. Esta solução oferece funcionalidades essenciais, validação de dados e operações de CRUD

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published