Skip to content

Commit 75bac08

Browse files
committed
chore: Adiciona informações relevantes
1 parent a5885cb commit 75bac08

File tree

1 file changed

+79
-1
lines changed

1 file changed

+79
-1
lines changed

README.md

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,81 @@
11
# restapi-node-docker
22

3-
API Rest desenvolvida com NodeJS e SQLite para rodar dentro de um container docker
3+
Este projeto consiste em uma API REST baseada em Node.js, conectada a um banco de dados SQLite.
4+
5+
## Documentação da API
6+
7+
Para facilitar o entendimento da API, existem dois documentos Swagger disponíveis:
8+
9+
- Um documento Swagger documenta os principais endpoints da API REST.
10+
- O outro documento Swagger é para endpoints restritos na área administrativa.
11+
12+
Cada Swagger possui rotas específicas de acesso: `/swagger` para o Swagger principal e `/swagger-manager` para o Swagger administrativo.
13+
14+
## Segurança
15+
16+
A proteção das rotas é realizada por meio da validação de chave de API, sendo necessário uma chave adicional para acessar as rotas administrativas.
17+
18+
## Parametrização
19+
20+
A modificação do comportamento da aplicação é possível por meio de variáveis de ambiente, que representam os parâmetros centrais. Você pode alterar ou adicionar os valores no arquivo ENV correspondente ao ambiente em que a aplicação vai ser executada. Você também pode optar por alterar essas configurações diretamente no ambiente em que a aplicação vai rodar. As variáveis de ambiente possuem maior prioridade do que os valores definidos no arquivo ENV.
21+
22+
Segue abaixo as configurações que podem ser alteradas:
23+
24+
- **API_KEY**: Credenciais de acesso fornecidas para permitir acessar os endpoints da aplicação.
25+
- **DATABASE_FILE_NAME**: Corresponde ao nome do arquivo que vai conter o banco de dados SQLite.
26+
- **EXPRESS_TRUST_PROXY_VALUE**: Define se a aplicação deve ou não considerar se está atrás de um proxy.
27+
- **LEVEL_COMPRESS_FILE**: Corresponde ao nível de compactação que o arquivo ZIP gerado deve se submeter.
28+
- **MAX_ALLOWED_MIN_SERVER**: Corresponde ao tempo em minutos máximo que o arquivo gerado deve ficar no servidor.
29+
- **MNG_AUTHENTICATION**: Corresponde à segunda chave de autenticação que o usuário deve informar para conseguir consumir os endpoints da área administrativa.
30+
- **MUST_HIDE_INFO_MESSAGE**: Informa se deve ocultar as mensagens de log info geradas pela aplicação.
31+
- **MUST_RUN_MORGAN_BODY**: Se o valor for verdadeiro, será exibido no console toda entrada e saída de dados da aplicação.
32+
- **NU_PORT**: Corresponde à porta em que a aplicação vai responder as chamadas HTTP feitas para o express.
33+
- **QT_LIMIT_DELETE**: Corresponde à quantidade máxima de registros que podem ser apagados por vez ao chamar o endpoint "/mng/database/delete".
34+
- **QT_LIMIT_RESULT**: Corresponde à quantidade máxima de registros que serão exibidos por vez ao chamar os endpoints: "/mng/log-events/find" ou "/mng/log-errors/find".
35+
- **QT_MAX_RATE_MIN**: Corresponde ao número máximo de requisições que podem ser feitas por minuto para a API.
36+
- **SWAGGER_CUSTOM_CSS**: Define um CSS personalizado para as páginas do swagger.
37+
- **SWAGGER_CUSTOM_SITE_TITLE**: Define um title personalizado para as páginas do swagger.
38+
- **SWAGGER_SERVERS_DESCRIPTION**: Define um texto descritivo personalizado para as páginas do swagger.
39+
- **SWAGGER_URL**: Define o texto exibido na inicialização da aplicação que mostra a URL de acesso ao SWAGGER.
40+
41+
## Sistema de Logs
42+
43+
Um sistema de logs robusto foi implementado para registrar as requisições e métodos invocados, permitindo consultas posteriores.
44+
45+
## Testes automatizados
46+
47+
O projeto possui testes automatizados que desempenham um papel crucial na garantia da qualidade e estabilidade. Os resultados dos testes são exibidos no console, apresentando o número total de testes executados, a quantidade de testes aprovados e a quantidade de testes reprovados. Os testes são categorizados em duas classes: testes unitários e testes de integração. Para a criação e execução desses testes automatizados, utilizamos as bibliotecas Jest e supertest.
48+
49+
## Utilização do Babel e Suporte a Versões Antigas do Node.js
50+
51+
O código-fonte em Node.js utiliza o Babel para permitir o uso de recursos modernos do Node e transpilação para versões mais antigas.
52+
53+
## Integração com GitHub Actions
54+
55+
O projeto possui duas GitHub Actions configuradas.
56+
57+
A primeira gera uma imagem Docker do projeto compilado, pronta para o ambiente de homologação. Após a geração da imagem, ela é publicada no Docker Hub com a tag "latest". Essa ação é acionada sempre que um commit é feito nesta branch.
58+
59+
A segunda realiza testes automatizados sempre que um Pull Request é aberto na branch Main. Em caso de falha nos testes, o Pull Request é automaticamente fechado e negado.
60+
61+
## Como baixar e usar a imagem docker
62+
63+
docker run -d -e NU_PORT=2000 -p 2000:2000 --memory=400m --name github-restapi-node-docker tglimatech/github-restapi-node-docker:latest
64+
65+
### Detalhes dos parâmetros do comando:
66+
67+
- `-d`: Executa o contêiner em segundo plano, como um processo de longa duração.
68+
- `-e NU_PORT`: Define a variável de ambiente NU_PORT para que a aplicação responda às requisições feitas nela.
69+
- `-p 2000:2000`: Mapeia a porta 2000 do host para a porta 2000 do contêiner, permitindo que o serviço dentro do contêiner seja acessado pela porta 2000 do host.
70+
- `--memory=400m`: Limita a quantidade de memória disponível para o contêiner a 400 megabytes.
71+
- `--name github-restapi-node-docker`: Atribui o nome "github-restapi-node-docker" ao contêiner.
72+
- `tglimatech/github-restapi-node-docker:latest`: Nome da imagem a partir da qual o contêiner será criado e iniciado. A tag `latest` garante que o contêiner seja criado com a versão mais recente da imagem.
73+
74+
## Pré-requisitos
75+
76+
- Para rodar a aplicação localmente será necessário o [NodeJS v18](https://nodejs.org/en/download) ou superior.
77+
- Para utilizar a imagem Docker, certifique-se de ter o Docker instalado em seu ambiente de desenvolvimento. Para instalar o Docker, siga as instruções na [documentação do Docker](https://docs.docker.com/get-started/).
78+
79+
## Sugestões
80+
81+
Sempre são bem-vindas sugestões de melhorias. Para enviá-las, basta abrir uma issue no repositório do projeto. Caso queira relatar um problema, você também pode abrir uma issue. Se preferir, é possível abrir um pull request com a correção.

0 commit comments

Comments
 (0)