Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adolligit/store-manager
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!
https://github.com/adolligit/store-manager
api-rest architecture-components docker docker-compose docker-image dockerfile express-api express-js express-rescue expressjs mocha-chai mocha-tests mochajs mysql mysql-database mysql2 nodejs swagger-ui unit-testing unittest
Last synced: about 2 months ago
JSON representation
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!
- Host: GitHub
- URL: https://github.com/adolligit/store-manager
- Owner: Adolligit
- Created: 2022-11-30T22:13:06.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-08-20T04:49:00.000Z (over 1 year ago)
- Last Synced: 2024-11-06T13:56:32.289Z (3 months ago)
- Topics: api-rest, architecture-components, docker, docker-compose, docker-image, dockerfile, express-api, express-js, express-rescue, expressjs, mocha-chai, mocha-tests, mochajs, mysql, mysql-database, mysql2, nodejs, swagger-ui, unit-testing, unittest
- Language: JavaScript
- Homepage: https://www.linkedin.com/in/adelson-lima/
- Size: 3.67 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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:
```bash
git clone [email protected]: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:
```bash
docker compose up -d
```
2. Entre no contêiner da aplicação:
```bash
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:
```bash
touch .env
```
2. Abra o arquivo **.env** e então copie e cole as informações a seguir:
```bash
# db
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=
MYSQL_PASSWORD=
MYSQL_DATABASE=StoreManager
# app
APP_PORT=3000
```
3. 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:
```bash
npm install
```
Criar as tabelas no banco de dados MySQL:
```bash
npm run migration
```
Popular o banco de dados:
```bash
npm run seed
```
Iniciar o projeto:
```bash
npm start
```
Inciar o projeto em modo de desenvolvimento (nodemon):
```bash
npm run dev
```
Executar os a cobertura de testes:
```bash
npm run test:mocha
```
Executar o **ESLint** para verificar os erros do código estático:
```bash
npm run lint
```
Recriar o banco de dados já populado:
```bash
npm run reset
```
## Quais são as rotas desta API?
Deixei uma documentação feita com [Swagger UI](https://swagger.io/tools/swagger-ui/) para facilitar e lhe orientar no uso da API. Você pode acessa-la em [http://127.0.0.1:3000/v1/docs/](http://127.0.0.1:3000/v1/docs/).
## 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:
## 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: [email protected].
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
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.json` e o `package.json`, depois colar na pasta do projeto:
- https://github.com/Adolligit/store-manager/blob/main/package-lock.json;
- https://github.com/Adolligit/store-manager/blob/main/package.json.
Erro ao tentar popular o banco de dados ou ele não foi reconhecido
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:
## 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.