Skip to content

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

Notifications You must be signed in to change notification settings

lionelsu/store-manager-api

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

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •