Skip to content
This repository has been archived by the owner on Oct 19, 2024. It is now read-only.

Latest commit

 

History

History
192 lines (126 loc) · 10.1 KB

README.md

File metadata and controls

192 lines (126 loc) · 10.1 KB

BOPE

Restaurant Management System

Microsserviço de Catálogo

Deploy to Amazon EKS Quality Gate Status Coverage

Microsserviço de Catálogo de Produtos e Categorias do Sistema de Gestão de Restaurantes (RMS) desenvolvido pelo grupo "BOPE" G03 da turma 4SOAT para o Tech Challenge da Pós Tech em Software Architecture da FIAP.

Stack

NodeJS NestJS TypeScript Postgres Docker Kubernetes Terraform

Executar a aplicação

  1. Baixe e instale o Node.js em https://nodejs.org/en/download
  2. Instale o CLI do NestJS através do comando npm i -g @nestjs/cli
  3. Navegue até a pasta raiz do projeto usando o Terminal;
  4. Faça uma cópia do arquivo .env.template com o nome .env e preencha as variáveis de ambiente dentro dele;
  5. Execute o comando npm install para instalar os pacotes npm;
  6. Execute o comando docker-compose up -d db-catalogo para iniciar o container do banco de dados;
  7. Use o comando npm run start para iniciar a aplicação.
  8. Acesse o Swagger em http://localhost:3001/swagger/
Como executar a aplicação usando o Docker Compose?

Executar a aplicação usando o Docker Compose

  1. Clone este repositório;
  2. Navegue até a pasta raiz do projeto usando o Terminal;
  3. Faça uma cópia do arquivo .env.template com o nome .env e preencha as variáveis de ambiente dentro dele;
  4. Execute o comando docker-compose up -d --build --force-recreate
  5. Acesse o Swagger em http://localhost:3001/swagger/
Como executar a aplicação usando o Kubernetes do Docker Desktop?

Executar a aplicação usando o Kubernetes do Docker Desktop

  1. Clone este repositório;
  2. Navegue até a pasta raiz do projeto usando o Terminal;
  3. Use o comando docker build -t rms-api-catalogo:latest . para gerar a imagem de container da aplicação;
  4. Use o comando kubectl apply -f k8s/development/postgres/namespace.yaml -f k8s/development/postgres/pvc-pv.yaml -f k8s/development/postgres/config.yaml -f k8s/development/postgres/secrets.yaml -f k8s/development/postgres/deployment.yaml -f k8s/development/postgres/service.yaml para fazer deploy do banco de dados;
  5. Use o comando kubectl apply -f k8s/development/api/namespace.yaml -f k8s/development/api/config.yaml -f k8s/development/api/secrets.yaml -f k8s/development/api/deployment.yaml -f k8s/development/api/service.yaml -f k8s/development/api/hpa.yaml para fazer deploy da aplicação;
  6. Acesse o Swagger em http://localhost:3001/swagger/

Para remover a aplicação do Kubernetes, use o comando kubectl delete namespace rms

Sobre os Secrets do Kubernetes

Em seu ambiente de desenvolvimento, por questão de segurança, abra os arquivos /k8s/development/postgres/secrets.yaml e /k8s/development/api/secrets.yaml na pasta /k8s/development e preencha os valores sensíveis manualmente.

No ambiente de produção os Secrets do Kubernetes são gerenciados pelo AWS Secrets Manager.

Para mais informações visite a página Boas práticas para secrets do Kubernetes.

Banco de Dados

Entendemos que o modelo relacional é o que mais se adequa ao nosso problema de negócio, contexto atual e requisitos no Microsserviço de Catálogo. Leia mais sobre as motivações para adoção do modelo relacional no Architectural Decision Record (ADR).

Quais são os parâmetros da conexão e credenciais para acesso ao banco de dados PostgreSQL?

Você pode conectar-se a instância de banco de dados PostgreSQL usando o pgAdmin, o terminal através do psql, ou qualquer outra IDE ou ferramenta compatível.

Host: localhost
Porta: 5432 (padrão)
Usuário: pguser
Senha: pgpwd
DB name: rms

Documentação

A documentação do projeto está disponível no GitHub Wiki.

Arquitetura

Architectural Pattern: Clean Architecture + Screaming Architecture

image

Como contribuir

Para contribuir com o projeto consulte o guia em CONTRIBUTING.md

Installation

$ npm install

Running the app

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

Métricas de código

Quality Gate Status Technical Debt Coverage Lines of Code Code Smells Maintainability Rating Security Rating Bugs Vulnerabilities Duplicated Lines (%) Reliability Rating

Projetos relacionados

API de Pedidos
https://github.com/Grupo-G03-4SOAT-FIAP/rms-api-pedidos

Infrastructure as code (IaC) com Terraform
https://github.com/Grupo-G03-4SOAT-FIAP/rms-iac

OWASP ZAP

Reports OWASP ZAP API Scan

Os reports de "antes" e "depois" encontram-se na pasta /docs/zap-scanning-report
Clique aqui para acessar↗️

Como escanear a API usando o OWASP ZAP?

ZAP - API Scan

Para escanear todos os endpoints da API em busca de vulnerabilidades siga o passo a passo abaixo.

  1. Execute a aplicação usando o Docker Compose;
  2. Execute o comando abaixo:
docker run --name zap --network host -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py -t http://localhost:3001/swagger-json -f openapi -r report.html

Substitua os parenteses em $(pwd) por chaves ${pwd} no Windows.

O report em formato HTML será gerado no diretório atual.

Clique aqui para obter mais informações sobre o API Scan do ZAP.

Requisitos

Node.js v20.12.0 (LTS), Docker Desktop 24.0.6 e Kubernetes v1.28

SonarCloud