Skip to content

Store manager é uma plataforma de gerenciamento de vendas no formato dropshipping, que permite realizar as operações de CRUD (Create, Read, Update, Delete) para produtos e vendas.

Notifications You must be signed in to change notification settings

isaque-S-0liveira/store-manager-BE

Repository files navigation

Store Manager

Contexto

O foco principal deste projeto é, com base nos ensinamentos da Trybe, desenvolver uma API RESTful utilizando a arquitetura MSC (Model-Service-Controller). O sistema criado é uma plataforma de gerenciamento de vendas no formato dropshipping, que permite realizar as operações de CRUD (Create, Read, Update, Delete) para produtos e vendas. A aplicação utiliza o banco de dados MySQL para a gestão de dados e segue as boas práticas de desenvolvimento de APIs.

O que é a Trybe?🤔 A Trybe é uma escola de desenvolvimento web genuinamente comprometida com o sucesso profissional de seus estudantes. Com o Modelo de Sucesso Compartilhado (MSC) oferecido pela Trybe Fintech, uma instituição financeira autorizada pelo Banco Central do Brasil, os alunos têm a opção de pagar apenas quando estiverem trabalhando.
🎲Diagrama ER
page1

Objetivos do Projeto:

  1. Desenvolvimento da API:
  • Implementar endpoints para criar, listar, atualizar e deletar produtos e vendas.
  • A API é capaz de gerenciar produtos, permitindo que os usuários adicionem, visualizem, atualizem e removam produtos do banco de dados.
  • A API também oferece funcionalidades de gerenciamento de vendas, permitindo registrar múltiplos produtos em uma venda e acompanhar os detalhes das transações.
  1. Arquitetura MSC:

    • Seguindo o padrão MSC, a aplicação foi organizada em três camadas principais:
      • Model: Responsável por interagir com o banco de dados.
      • Service: Contém a lógica de negócios e validações.
      • Controller: Recebe as requisições e envia as respostas ao cliente.
  2. Validações e Regras de Negócio:

    • Foram implementadas diversas validações para garantir a consistência dos dados. Os endpoints de produtos e vendas validam o corpo da requisição antes de acessar o banco de dados, garantindo que as informações enviadas pelos clientes estejam corretas.
  3. Testes Automatizados:

    • Um dos grandes focos deste projeto foi a implementação de testes automatizados. A aplicação foi testada para garantir a cobertura mínima exigida, com testes unitários escritos para cobrir todas as camadas da aplicação.
    • Os testes foram implementados utilizando a ferramenta Mocha, e mockando o banco de dados nas camadas de model.

Funcionalidades Implementadas:

  • Produtos:

    • GET /products: Retorna todos os produtos cadastrados no banco de dados.
    • GET /products/:id: Retorna o produto com o ID fornecido na URL.
    • POST /products: Cadastra um novo produto no banco de dados.
    • PUT /products/:id: Atualiza um produto existente.
    • DELETE /products/:id: Remove um produto com base no ID fornecido.
  • Vendas:

    • GET /sales: Retorna todas as vendas registradas.
    • GET /sales/:id: Retorna uma venda específica pelo ID.
    • POST /sales: Cadastra uma nova venda, permitindo registrar múltiplos produtos.
    • DELETE /sales/:id: Remove uma venda com base no ID fornecido.

Habilidades Desenvolvidas:

  • API RESTful: Desenvolvimento de uma API seguindo os padrões REST, utilizando Node.js e Express.
  • Arquitetura MSC: Organização da aplicação em camadas (Model-Service-Controller), separando responsabilidades e melhorando a manutenção do código.
  • MySQL: Utilização de um banco de dados relacional para armazenar e manipular informações de produtos e vendas.
  • Validações e Testes: Implementação de validações para garantir a integridade dos dados e desenvolvimento de testes unitários para cobrir o comportamento da aplicação.
  • Testes Automatizados: Utilização do Mocha para testar as funcionalidades da API, com foco em cobrir as camadas da aplicação e simular interações com o banco de dados.

Este projeto foi uma excelente oportunidade para aplicar conceitos fundamentais do desenvolvimento backend, incluindo a criação de APIs RESTful, validações de dados, e a importância dos testes automatizados no ciclo de desenvolvimento de software.

Tecnologias Usadas

  • Express - Framework para Node.js, utilizado para gerenciar rotas e middlewares na criação da API.

  • Body-parser - Middleware usado para manipular o corpo das requisições HTTP, facilitando a leitura de JSON e outros formatos.

  • Express-async-errors - Módulo que simplifica o tratamento de erros em rotas assíncronas no Express.

  • Joi - Biblioteca para validação de dados no backend.

  • MySQL2 - Cliente MySQL para Node.js com suporte a promessas, utilizado para conectar e manipular o banco de dados MySQL.

  • Mocha - Framework de testes JavaScript utilizado para realizar testes unitários.

  • Chai - Biblioteca de asserções utilizada em conjunto com Mocha para validar os resultados dos testes.

  • Chai-http - Plugin do Chai para fazer requisições HTTP nos testes.

  • Frisby - Biblioteca para testar APIs RESTful.

  • Jest - Framework de testes JavaScript com suporte a mocks e spies.

  • Sinon - Ferramenta para criar mocks, stubs e spies em testes.

  • Sinon-chai - Extensão para integração entre Sinon e Chai.

  • NYC - Ferramenta de cobertura de código, utilizada para medir o percentual de código testado.

Entre em contato:

E-mail isaque oliveira WhatsApp

About

Store manager é uma plataforma de gerenciamento de vendas no formato dropshipping, que permite realizar as operações de CRUD (Create, Read, Update, Delete) para produtos e vendas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published