Skip to content

An RMS - Restaurant Management System built for the Tech Challenge in the Software Architecture postgraduate degree at FIAP in São Paulo, Brazil

License

Notifications You must be signed in to change notification settings

Grupo-G03-4SOAT-FIAP/rms-api-pagamentos

Repository files navigation

BOPE

Restaurant Management System

Microsserviço de Pagamentos

Deploy to Amazon EKS Quality Gate Status Coverage

Microsserviço de Pagamentos 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.

image

Stack

NodeJS NestJS TypeScript Postgres Docker Kubernetes Terraform

mercado-pago

Executar a aplicação

Important

Antes de executar o microsserviço de pagamentos, execute primeiro o microsserviço de pedidos, seguindo as instruções disponíveis no README da api de pedidos aqui.

  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-pagamentos 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:3003/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:3003/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-pagamentos: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:3003/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.

Testar o pagamento de pedidos através do QR Code do Mercado Pago

Para testar o pagamento de pedidos usando o QR Code do Mercado Pago você vai precisar criar uma Aplicação no portal do Mercado Pago Developers.

  1. Siga as instruções na página Pré-requisitos no Mercado Pago Developers;
  2. Após criar as contas de teste do Vendedor e do Comprador, abra uma janela anônima (Ctrl + Shift + P) no navegador e faça login no portal do Mercado Pago Developers usando o usuário e senha da conta de teste do Vendedor;
  3. Após fazer login no portal do Mercado Pago Developers usando o usuário e senha da conta de teste do Vendedor, crie uma aplicação de testes dento da conta de testes do Vendedor.
  4. Anote o User ID que aparece em baixo de "Detalhes da aplicação" na página inicial da aplicação de testes dentro da conta de testes do Vendedor;
  5. Clique em "Credenciais de teste" no menu do lado esquerdo da tela e anote o Access Token da aplicação de testes;
  6. Usando o Postman, cadastre uma Loja conforme instruções na página Criar loja. Anote o id da Loja que você cadastrou;
  7. Usando o Postman, cadastre um Caixa conforme instruções na página Criar caixa. Anote o external_id do Caixa que você cadastrou;
  8. Preencha as variáveis de ambiente no arquivo .env com o User ID e Access Token da aplicação de testes e com o id da Loja e o external_id do Caixa que você de cadastrou anteriormente através da API do Mercado Pago;
  9. Execute a aplicação.

Tip

Para instruções mais detalhadas visite https://github.com/dannevesdantas/poc-mercadopago

Banco de Dados

Entendemos que o modelo de documento é o que mais se adequa ao nosso problema de negócio, contexto atual e requisitos no Microsserviço de Pagamentos.

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

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

Host: localhost
Porta: 27017 (padrão)
Usuário: admin
Senha: pass
DB name: pagamentos

mongodb://admin:pass@db-pagamentos:27017/

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:3003/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
Pagamentos processados por Mercado Pago.

SonarCloud

About

An RMS - Restaurant Management System built for the Tech Challenge in the Software Architecture postgraduate degree at FIAP in São Paulo, Brazil

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages