Skip to content

Store Manager é uma API Rest feita em NodeJS + ExpressJS, que faz consultas diretamente no banco de dados MySQL através query's no 'hardcoded'. O projeto foi idealizado pela escola de programação @tryber e realizado pelos alunos, como eu. Seja muito bem-vindo ao repositório!

Notifications You must be signed in to change notification settings

Adolligit/store-manager

Repository files navigation

Store Manager

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.

Como eu faço para executar este projeto?

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/

Instalação

🚨 É 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 🐳 Requisitos
Você deve possuir as seguintes ferramentas:
  • Docker: v20.1
  • Docker Compose: v1.29
  1. Crie e inicie os contêiners:
docker compose up -d
  1. Entre no contêiner da aplicação:
docker exec -it store_manager bash

Instalar localmente 💻 Requisitos
Você deve possuir as seguintes ferramentas:
  • Node.js: v16
  • npm: v8.19
  • MySQL: v8
  1. Crie um arquivo .env na pasta raiz e declare as variáveis de ambiente:
touch .env
  1. 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
  2. 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).

Execução

Instalar as dependências do projeto:

npm install

Criar as tabelas no banco de dados MySQL:

npm run migration

Popular o banco de dados:

npm run seed

Iniciar o projeto:

npm start

Inciar o projeto em modo de desenvolvimento (nodemon):

npm run dev

Executar os a cobertura de testes:

npm run test:mocha

Executar o ESLint para verificar os erros do código estático:

npm run lint

Recriar o banco de dados já populado:

npm run reset

Quais são as rotas desta API?

Deixei 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/. gif de demonstração de uso

Como estão organizadas as tabelas?

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: DER

Erros comuns

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.

Possíveis erros de instalação e execução:

Erro ao subir os contêiners: docker compose up -d docker-error

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 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:

Erro ao tentar popular o banco de dados ou ele não foi reconhecido npm-seed

Este erro significa que não há criado o banco de dados 'StoreManager'.

Para resolver isso você deve:

  • Executar o comando npm run migration (acho que você esqueceu disso lá nos comando acima).

Linguagens e ferramentas:

NodeJs NodeJs Express Mocha Chai Sinon NodeJs NodeJs

Agradecimento

Com este projeto tive a oportunidade de trabalhar com camadas na construção da API Rest e utilizar a técnica de TDD, cobrindo parte do desenvolvimento com testes unitários.

E nada disso seria possível se não houvesse a idealização do projeto, portanto, agradeço a @tryber pelo cuidado em trazer um projeto que nos desafia (nos alunos), a colocar em prática todos os nossos conhecimento em programação.

About

Store Manager é uma API Rest feita em NodeJS + ExpressJS, que faz consultas diretamente no banco de dados MySQL através query's no 'hardcoded'. O projeto foi idealizado pela escola de programação @tryber e realizado pelos alunos, como eu. Seja muito bem-vindo ao repositório!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published