https://github.com/igorbrizack/projetostoremanager
Store Manager MSC API
https://github.com/igorbrizack/projetostoremanager
api backend javascript msc-project nodejs test
Last synced: 3 months ago
JSON representation
Store Manager MSC API
- Host: GitHub
- URL: https://github.com/igorbrizack/projetostoremanager
- Owner: IgorBrizack
- Created: 2022-09-13T16:40:39.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-09-13T18:13:52.000Z (almost 4 years ago)
- Last Synced: 2025-01-26T15:11:31.378Z (over 1 year ago)
- Topics: api, backend, javascript, msc-project, nodejs, test
- Language: JavaScript
- Homepage:
- Size: 260 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto Store Manager
## Sobre:
O projeto Store Manager consiste na criação de uma API em conexão com um banco de dados SQL. Durante o desenvolvimento foram necessário a criação de uma CRUD para interagir com o banco de dados e a nossa API, aplicação do MSC (Model, Service e Controller) assim como foi necessário desenvolver testes unitários que cobrisse no minimo 60% da nossa aplicação.
## 📋 Execute o projeto em sua máquina
🐳 Rodando no Docker vs Localmente
### 👉 Com Docker
**:warning: Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. [Veja aqui](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04-pt) ou [na documentação](https://docs.docker.com/compose/install/) como instalá-lo. No primeiro artigo, você pode substituir onde está com `1.26.0` por `1.29.2`.**
> :information_source: Rode os serviços `node` e `db` com o comando `docker-compose up -d`.
- Lembre-se de parar o `mysql` se estiver usando localmente na porta padrão (`3306`), ou adapte, caso queria fazer uso da aplicação em containers;
- Esses serviços irão inicializar um container chamado `store_manager` e outro chamado `store_manager_db`;
- A partir daqui você pode rodar o container `store_manager` via CLI ou abri-lo no VS Code.
> :information_source: Opção 1: Use o comando `docker-compose run node npm test`, ou para acessar o container e executar lá:
> :information_source: Opção 2: Use o comando `docker exec -it store_manager bash` e sigas passos abaixo.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
> :information_source: Instale as dependências [**Caso existam**] com `npm install`
- **:warning: Atenção:** Caso opte por utilizar o Docker, **TODOS** os comandos disponíveis no `package.json` (npm start, npm test, npm run dev, ...) devem ser executados **DENTRO** do container, ou seja, no terminal que aparece após a execução do comando `docker exec` citado acima.
- **:warning: Atenção:** O **git** dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.
- **:warning: Atenção:** Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
- **:warning: Atenção:** Se você se deparar com o erro abaixo, quer dizer que sua aplicação já esta utilizando a `porta 3000`, seja com outro processo do Node.js (que você pode parar com o comando `killall node`) ou algum container! Neste caso você pode parar o container com o comando `docker stop `.
- ✨ **Dica:** Antes de iniciar qualquer coisa, observe os containers que estão em execução em sua máquina. Para ver os containers em execução basta usar o comando `docker container ls`, caso queira parar o container basta usar o comando `docker stop nomeContainer` e se quiser parar e excluir os containers, basta executar o comando `docker-compose down`
- ✨ **Dica:** A extensão `Remote - Containers` (que estará na seção de extensões recomendadas do VS Code) é indicada para que você possa desenvolver sua aplicação no container Docker direto no VS Code, como você faz com seus arquivos locais.
### 👉 Sem Docker
> :information_source: Instale as dependências [**Caso existam**] com `npm install`
- **:warning: Atenção:** Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
- **:warning: Atenção:** Não esqueça de renomear/configurar o arquivo `.env.example` para os testes locais funcionarem.
- **:warning: Atenção:** Para rodar o projeto desta forma, **obrigatoriamente** você deve ter o `Node.js` instalado em seu computador.
- **:warning: Atenção:** A versão do `Node.js` e `NPM` a ser utilizada é `"node": ">=16.0.0"` e `"npm": ">=7.0.0"`, como descrito a chave `engines` no arquivo `package.json`. Idealmente deve-se utilizar o Node.js na `versão 16.14`, a versão na que esse projeto foi testado.
## 👨🏻💻 Habilidades
- Criar uma aplicação usando o Express.js;
- Criar uma API RESTful utilizando a arquitetura MSC (Model-Service-Controller);
- Implementar testes unitários com Mocha, Chai e Sinon.
## 🛠️ Ferramentas & Metodologias Utilizadas
- [Node.js](https://nodejs.org/en/);
- [Express.js](https://expressjs.com/);
- [Mocha](https://mochajs.org/);
- [Chai](https://www.chaijs.com/);
- [Sinon.js](https://sinonjs.org/);
- [sinon-chai](https://www.chaijs.com/plugins/sinon-chai/);
- [MYSQL](https://www.mysql.com/);
- [mysql2](https://www.npmjs.com/package/mysql2);
- [Joi](https://joi.dev/api/?v=17.6.0);
- [Docker](https://www.docker.com/);
- JavaScript ES6+;
- TDD (Test Driven Development) - Desenvolvimento Orientado por Testes.