Skip to content

Repository files navigation

Store Manager

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

Pré-Requisitos

Utilize o Docker:

Instalação

  1. 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
  2. Iniciar o Contêiner Docker

    Utilize o Docker Compose para iniciar o contêiner do Store Manager:

    docker compose up -d
  3. Acesse a documentação da API no navegador:

    http://127.0.0.1:3001/v1/docs/

Uso

Para interagir com o Store Manager, você pode usar os seguintes comandos:

Visualização de Logs

docker logs -n 10 -f store_manager

Linha de Comando Interativa, usada para testar a aplicação

docker exec -it store_manager bash

Resetar o Banco de Dados (deve ser executado dentro da linha de comando interativa)

npm run db:reset

Rotas da API

Produtos:

  • 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

Testes

  • 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

Habilidades desenvolvidas

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.

About

RESTful API offering comprehensive CRUD functionality for sales management, specifically drop shipping. Developed with TDD methodology.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages