Documentação da API no Postman
O Store Manager API é uma solução completa de gerenciamento de vendas por drop shipping. Esta API oferece operações de CRUD (Create, Read, Update, Delete) para facilitar o gerenciamento de vendas. Desenvolvida com foco na qualidade e seguindo a metodologia TDD (Test-Driven Development), a API adota uma arquitetura em camadas consistente com Model, Service e Controller (MSC).
Ferramentas Utilizadas
-
Tecnologias Principais:
- Node.js
- Express.js
- MySQL Server
-
Testes:
- Mocha
- Chai
- Sinon
-
Documentação:
- Swagger
- Postman
Utilize o Docker:
-
Clonar o Repositório
Primeiro, copie ou clone este repositório para o seu sistema local usando o Git:
git clone git@github.com:lionelsu/store-manager-api.git && cd store-manager-api
-
Iniciar o Contêiner Docker
Utilize o Docker Compose para iniciar o contêiner do Store Manager:
docker compose up -d
-
Acesse a documentação da API no navegador:
http://127.0.0.1:3001/v1/docs/
Para interagir com o Store Manager, você pode usar os seguintes comandos:
Visualização de Logs
docker logs -n 10 -f store_managerLinha de Comando Interativa, usada para testar a aplicação
docker exec -it store_manager bashResetar o Banco de Dados (deve ser executado dentro da linha de comando interativa)
npm run db:resetProdutos:
POST /products: Cadastra um novo produto.GET /products: Retorna todos os produtos cadastrados.GET /products/:id: Retorna um produto específico pelo ID.GET /products/search: Retorna produtos com base na consulta de nome.PUT /products/:id: Atualiza um produto pelo ID.DELETE /products/:id: Exclui um produto pelo ID.
Vendas:
POST /sales: Cadastra uma nova venda.GET /sales: Retorna todas as vendas cadastradas.GET /sales/:id: Retorna uma venda específica pelo ID.PUT /sales/:saleId/products/:productId/quantity: Atualiza a quantidade de um produto em uma venda.DELETE /sales/:id: Exclui uma venda pelo ID.
Configuração
Variáveis de ambiente dentro do container:
MYSQL_USER: root
MYSQL_PASSWORD: password
MYSQL_HOSTNAME: db
MYSQL_PORT: 3306
PORT: 3001-
Dentro da linha de comando interativa, você pode executar os seguintes testes:
- Testes Unitários:
npm run test:mocha
- Cobertura de Testes:
npm run test:coverage
- Testes de Mutação:
npm run test:mutation
Usei o Node.js com o Express.js como base da minha aplicação, permitindo criar facilmente endpoints HTTP para atender às necessidades do sistema.
O banco de dados MySQL Server foi escolhido para armazenar dados relacionados a produtos, vendas e outros elementos cruciais do sistema.
A qualidade do código foi garantida por meio de testes rigorosos usando Mocha, Chai e Sinon. Esses testes avaliaram minuciosamente os endpoints, serviços e funções para garantir que tudo funcionasse corretamente.
Para documentar a API, utilizei o Swagger, que inclui informações sobre rotas, parâmetros e exemplos práticos.
Também disponibilizei uma coleção no Postman para facilitar testes e interações com a API.
Com essas etapas concluídas, estou confiante na entrega de uma API sólida e funcional, pronta para atender às necessidades dos usuários.