{"id":14989711,"url":"https://github.com/isaque-s-0liveira/store-manager-be","last_synced_at":"2026-02-18T00:34:47.263Z","repository":{"id":256060151,"uuid":"728419977","full_name":"isaque-S-0liveira/store-manager-BE","owner":"isaque-S-0liveira","description":" 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. ","archived":false,"fork":false,"pushed_at":"2024-09-08T18:35:45.000Z","size":313,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-09T05:41:10.296Z","etag":null,"topics":["chai","express-js","jest","joi","mocha","model-service-controller","mysql2","sinon","testesautomatizados"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isaque-S-0liveira.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-06T22:46:06.000Z","updated_at":"2024-09-08T18:43:14.000Z","dependencies_parsed_at":"2024-09-08T19:49:31.689Z","dependency_job_id":null,"html_url":"https://github.com/isaque-S-0liveira/store-manager-BE","commit_stats":null,"previous_names":["isaque-s-0liveira/store-manager-be"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/isaque-S-0liveira/store-manager-BE","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fstore-manager-BE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fstore-manager-BE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fstore-manager-BE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fstore-manager-BE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isaque-S-0liveira","download_url":"https://codeload.github.com/isaque-S-0liveira/store-manager-BE/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaque-S-0liveira%2Fstore-manager-BE/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016093,"owners_count":26085802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chai","express-js","jest","joi","mocha","model-service-controller","mysql2","sinon","testesautomatizados"],"created_at":"2024-09-24T14:18:48.240Z","updated_at":"2025-10-13T16:36:17.607Z","avatar_url":"https://github.com/isaque-S-0liveira.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Store Manager\n\n## Contexto\n\nO 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.\n\n\u003cdetails\u003e\n  \u003csummary\u003eO que é a Trybe?🤔\u003c/summary\u003e\n  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.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e🎲Diagrama ER\u003c/summary\u003e\n  \u003cdiv style=\"display:flex; justify-content:center;  align-items:center; width=\"100%\"\u003e\n  \u003cimg src=\"Preview/erStoreManager.png\" alt=\"page1\"/\u003e\n  \u003c/div\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003eObjetivos do Projeto:\u003c/h3\u003e\u003c/summary\u003e\n\n  1. **Desenvolvimento da API**:\n   - Implementar endpoints para criar, listar, atualizar e deletar **produtos** e **vendas**.\n   - A API é capaz de gerenciar produtos, permitindo que os usuários adicionem, visualizem, atualizem e removam produtos do banco de dados.\n   - 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.\n\n2. **Arquitetura MSC**:\n   - Seguindo o padrão **MSC**, a aplicação foi organizada em três camadas principais:\n     - **Model**: Responsável por interagir com o banco de dados.\n     - **Service**: Contém a lógica de negócios e validações.\n     - **Controller**: Recebe as requisições e envia as respostas ao cliente.\n   \n3. **Validações e Regras de Negócio**:\n   - 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.\n\n4. **Testes Automatizados**:\n   - 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.\n   - Os testes foram implementados utilizando a ferramenta **Mocha**, e mockando o banco de dados nas camadas de model.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003eFuncionalidades Implementadas:\u003c/h3\u003e\u003c/summary\u003e\n\n  \n- **Produtos**:\n  - **GET /products**: Retorna todos os produtos cadastrados no banco de dados.\n  - **GET /products/:id**: Retorna o produto com o ID fornecido na URL.\n  - **POST /products**: Cadastra um novo produto no banco de dados.\n  - **PUT /products/:id**: Atualiza um produto existente.\n  - **DELETE /products/:id**: Remove um produto com base no ID fornecido.\n\n- **Vendas**:\n  - **GET /sales**: Retorna todas as vendas registradas.\n  - **GET /sales/:id**: Retorna uma venda específica pelo ID.\n  - **POST /sales**: Cadastra uma nova venda, permitindo registrar múltiplos produtos.\n  - **DELETE /sales/:id**: Remove uma venda com base no ID fornecido.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003eHabilidades Desenvolvidas:\u003c/h3\u003e\u003c/summary\u003e\n\n  \n- **API RESTful**: Desenvolvimento de uma API seguindo os padrões REST, utilizando **Node.js** e **Express**.\n- **Arquitetura MSC**: Organização da aplicação em camadas (Model-Service-Controller), separando responsabilidades e melhorando a manutenção do código.\n- **MySQL**: Utilização de um banco de dados relacional para armazenar e manipular informações de produtos e vendas.\n- **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.\n- **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.\n\u003c/details\u003e\n\nEste 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.\n\n\n## Tecnologias Usadas\n\n\n- [Express](https://expressjs.com/) - Framework para Node.js, utilizado para gerenciar rotas e middlewares na criação da API.\n- [Body-parser](https://www.npmjs.com/package/body-parser) - Middleware usado para manipular o corpo das requisições HTTP, facilitando a leitura de JSON e outros formatos.\n- [Express-async-errors](https://www.npmjs.com/package/express-async-errors) - Módulo que simplifica o tratamento de erros em rotas assíncronas no Express.\n- [Joi](https://joi.dev/) - Biblioteca para validação de dados no backend.\n- [MySQL2](https://www.npmjs.com/package/mysql2) - Cliente MySQL para Node.js com suporte a promessas, utilizado para conectar e manipular o banco de dados MySQL.\n  \n- [Mocha](https://mochajs.org/) - Framework de testes JavaScript utilizado para realizar testes unitários.\n- [Chai](https://www.chaijs.com/) - Biblioteca de asserções utilizada em conjunto com Mocha para validar os resultados dos testes.\n- [Chai-http](https://www.chaijs.com/plugins/chai-http/) - Plugin do Chai para fazer requisições HTTP nos testes.\n- [Frisby](https://docs.frisbyjs.com/) - Biblioteca para testar APIs RESTful.\n- [Jest](https://jestjs.io/) - Framework de testes JavaScript com suporte a mocks e spies.\n- [Sinon](https://sinonjs.org/) - Ferramenta para criar mocks, stubs e spies em testes.\n- [Sinon-chai](https://www.chaijs.com/plugins/sinon-chai/) - Extensão para integração entre Sinon e Chai.\n- [NYC](https://www.npmjs.com/package/nyc) - Ferramenta de cobertura de código, utilizada para medir o percentual de código testado.\n\n\n## Entre em contato:\n\u003ca href=\"mailto:zazac3179@gmail.com\" target=\"_blank\"\u003e\n  \u003cimg align=\"center\" src=\"https://img.shields.io/badge/Gmail-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white\" alt=\"E-mail\" height=\"40\" width=\"auto\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.linkedin.com/in/isaque-s-oliveira/\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/linked-in-alt.svg\" alt=\"isaque oliveira\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://wa.me/5574981510614\" target=\"blank\"\u003e\u003cimg align=\"center\" src=\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/whatsapp.svg\" alt=\"WhatsApp\" height=\"30\" width=\"40\" /\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaque-s-0liveira%2Fstore-manager-be","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisaque-s-0liveira%2Fstore-manager-be","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaque-s-0liveira%2Fstore-manager-be/lists"}