Store Manager é uma API Rest que busca simular o gerenciamento de dados de uma loja.
Esta API foi construída em Node.js junto ao Express.js sendo que sua cobertura de teste unitários foi realizada em Mocha, Chai e Sinon. Para consultar os dados no banco, foram feitas query's diretamente no código ("hardcoded"), sendo que elas e a estrutura do banco de dados, foram criados em MySQL.
Antes de mais nada, primeiro faça o clone e navegue até a pasta do projeto:
git clone git@github.com:Adolligit/store-manager.git && cd store-manager/🚨 É crucial que você já tenha em sua máquina as ferramentas citadas em cada tipo de instalação, com a correta versão ou superior.
Escolha uma das instalações a seguir:
Instalar com Docker 🐳
RequisitosVocê deve possuir as seguintes ferramentas:
- Docker: v20.1
- Docker Compose: v1.29
- Crie e inicie os contêiners:
docker compose up -d- Entre no contêiner da aplicação:
docker exec -it store_manager bashInstalar localmente 💻
RequisitosVocê deve possuir as seguintes ferramentas:
- Node.js: v16
- npm: v8.19
- MySQL: v8
- Crie um arquivo .env na pasta raiz e declare as variáveis de ambiente:
touch .env- Abra o arquivo .env e então copie e cole as informações a seguir:
# db MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER= MYSQL_PASSWORD= MYSQL_DATABASE=StoreManager # app APP_PORT=3000
- No arquivo .env, informe seus dados de acesso ao banco de dados MySQL nas chaves: MYSQL_USER e MYSQL_PASSWORD (lembre-se de salvar o arquivo).
Instalar as dependências do projeto:
npm installCriar as tabelas no banco de dados MySQL:
npm run migrationPopular o banco de dados:
npm run seedIniciar o projeto:
npm startInciar o projeto em modo de desenvolvimento (nodemon):
npm run devExecutar os a cobertura de testes:
npm run test:mochaExecutar o ESLint para verificar os erros do código estático:
npm run lintRecriar o banco de dados já populado:
npm run resetDeixei uma documentação feita com Swagger UI para facilitar e lhe orientar no uso da API. Você pode acessa-la em http://127.0.0.1:3000/v1/docs/.

Apesar de ser uma API Rest bem simples, eu fiz esse DER para facilitar a visualização da estrutura do banco de dados. Desta forma fica mais fácil saber como esta o relacionamento entre as entidades. Confira:

Descrevo neste tópico alguns possíveis erros que você pode estar enfrentando durante a instalação ou execução desta API.
Uma das opções descritas no erro poderá resolver o problema que você esta enfrentando. Contudo, caso ainda permaneça com dificuldade para testar a API, me envie um e-mail: adelson.onod@gmail.com.
Antes de prosseguir, por favor confirme que:
- Docker 🐳
- Você tem instalado em sua máquina o Docker e o Docker Compose nas versões mínimas exigidas.
- Verificou que a Docker Engine esta funcionando corretamente na sua máquina.
- Localmente 💻
- Você tem instalado em minha máquina o MySQL, Node.js e NPM nas versões mínimas exigidas.
- Verificou que o MySQL esta funcionando corretamente na sua máquina.
Erro ao subir os contêiners: docker compose up -d
Você esta tentando subir os contêiners do Docker porém uma das portas já está em uso. Pode ser o banco de dados ou a API com este erro.
As portas descritas para uso no docker-compose.yml são:
- API: 3000
- Banco: 3307
Para resolver isso, você pode:
- Desativar os programas que estão fazendo uso das portas; OU
- Alterar o valor para as portas no arquivo docker-compose.yml, em:
- MYSQL_PORT;
- APP_PORT e;
- ports (para db e node): as portas da máquina local são descritas no lado esquerdo.
Erro durante a instalação de dependências: npm install
O NPM não encontrou o arquivo 'package.json' na pasta de execução. Você pode ter excluído sem querer ou pode estar executando o comando fora da pasta do projeto.
Para resolver isso, você pode:
- Verificar se esta na pasta do projeto. Se não tiver, basta entrar e executar o comando
npm install; OU - Baixar o
package-lock.jsone opackage.json, depois colar na pasta do projeto:
