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.
Há uma lanchonete de bairro que está expandindo devido seu grande sucesso. Porém, com a expansão e sem um sistema de controle de pedidos, o atendimento aos clientes pode ser caótico e confuso. Por exemplo, imagine que um cliente faça um pedido complexo, como um hambúrguer personalizado com ingredientes específicos, acompanhado de batatas fritas e uma bebida. O atendente pode anotar o pedido em um papel e entregá-lo à cozinha, mas não há garantia de que o pedido será preparado corretamente.
Sem um sistema de controle de pedidos, pode haver confusão entre os atendentes e a cozinha, resultando em atrasos na preparação e entrega dos pedidos. Os pedidos podem ser perdidos, mal interpretados ou esquecidos, levando à insatisfação dos clientes e a perda de negócios.
Em resumo, um sistema de controle de pedidos é essencial para garantir que a lanchonete possa atender os clientes de maneira eficiente, gerenciando seus pedidos e estoques de forma adequada. Sem ele, expandir a lanchonete pode acabar não dando certo, resultando em clientes insatisfeitos e impactando os negócios de forma negativa.
Para solucionar o problema, a lanchonete irá investir em um sistema de autoatendimento de fast food, que é composto por uma série de dispositivos e interfaces que permitem aos clientes selecionar e fazer pedidos sem precisar interagir com um atendente.
— Fonte: FIAP
Como 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.
- Siga as instruções na página Pré-requisitos no Mercado Pago Developers;
- Após criar as contas de teste do
Vendedor
eComprador
, 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; - 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.
- Anote o
User ID
que aparece em baixo de "Detalhes da aplicação" na página inicial da aplicação de testes do Vendedor; - Clique em "Credenciais de teste" no menu do lado esquerdo da tela e anote o
Access Token
da aplicação de testes do Vendedor; - Cadastre uma Loja e um Caixa (POS) na aplicação de testes do Vendedor através da API do Mercado Pago, usando o Postman. Anote o
id
da Loja e oexternal_id
do Caixa que você acabou de cadastrar; - Com o
User ID
eAccess Token
da aplicação de testes do Vendedor e com oid
da Loja e oexternal_id
do Caixa que você acabou de cadastrar, preencha as variáveis de ambiente no arquivo.env
- Execute a aplicação.
- Clone este repositório;
- Navegue até a pasta raiz do projeto;
- Use o comando
docker build -t rms-bff:latest .
para gerar a imagem de container da aplicação; - 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/deployment.yaml -f k8s/development/postgres/service.yaml
para fazer deploy do banco de dados; - Use o comando
kubectl apply -f k8s/development/bff/namespace.yaml -f k8s/development/bff/config.yaml -f k8s/development/bff/deployment.yaml -f k8s/development/bff/service.yaml -f k8s/development/bff/metrics-server.yaml -f k8s/development/bff/hpa.yaml
para fazer deploy da aplicação; - Acesse o Swagger em http://localhost:3000/swagger/
Os arquivos yaml dos manifestos do Kubernetes devem ser aplicados na ordem especificada acima.
Para remover a aplicação do Kubernetes, use o comando
kubectl delete namespace rms
Como executar a aplicação usando o Docker Compose?
- Clonar este repositório;
- Abra o arquivo
docker-compose.yml
e preencha o Acess Token e User ID do Mercado Pago; - Navegar até a pasta raiz do projeto;
- Usar o comando
docker-compose up --build --force-recreate --renew-anon-volumes
- Acessar o Swagger em http://localhost:3000/swagger/
DICA: Não esqueça de remover imagens e volumes antigos antes de executar a imagem Docker do projeto através do Docker Compose.
Você pode conectar-se a instância de banco de dados PostgreSQL usando o pgAdmin.
Host: localhost
Porta: 5432 (padrão)
Usuário: pguser
Senha: pgpwd
DB name: rms
A documentação do projeto está disponível no GitHub Wiki.
Architectural Pattern: Arquitetura Hexagonal / Ports and Adapters.
Para contribuir com o projeto consulte o guia em CONTRIBUTING.md
$ npm install
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov
Node.js v18.18.0 (LTS), Docker Engine 24.0.6 e Kubernetes v1.28