Integrantes
Lucas Leal - RM355575 - [email protected]
Merhy Omar Daychoum - RM356180 - [email protected]
Wanderson Pereira - RM356410 - [email protected]
Jackson Carbonera - RM354963 - [email protected]
Objetivo:
O sistema tem como objetivo principal facilitar e otimizar o gerenciamento de pedidos em lanchonetes. Ele oferece diversas funcionalidades para agilizar o processo de venda, desde a identificação do cliente até a entrega do pedido.
Funcionalidades:
- Gerenciamento de Pedidos:
- Criação e gerenciamento de pedidos.
- Identificação dos clientes por CPF (opcional).
- Definição dos itens do combo a partir de diferentes categorias de produtos.
- Acompanhamento do status do pedido em tempo real, desde sua realização até a entrega.
- Cardápio Completo:
- Organização dos produtos por categorias.
- Os clientes podem criar seus próprios combos conforme os produtos.
- API Gerencial:
- Cadastro e atualização dos produtos.
- Gerenciamento dos pedidos.
-
Repositórios
- Infraestrutura da API principal: https://github.com/Fiap-Self-Service/fiap-self-service
- Banco de Dados com Terraform: https://github.com/Fiap-Self-Service/fiap-self-service-database
- Infra Kubernetes com Terraform: https://github.com/Fiap-Self-Service/fiap-self-service-k8s
- Repositório Lambda: https://github.com/Fiap-Self-Service/fiap-self-service-lambda-cliente
-
Clean Architecture
A proposta de adequação ao clean code e clean architecture está especificada no documento: Proposta Clean Arch
-
Desenho da Arquitetura
Diagrama da arquitetura Kubernetes da aplicação. Os arquivos de configuração kubctl são encontrados no diretório: Componentes Kubernetes
Para construir os componentes da arquitetura, basta executar os seguintes comandos:kubectl apply -f kubernetes/metrics kubectl apply -f kubernetes/db kubectl apply -f kubernetes/api -
Swagger
Collection com todas as APIs desenvolvidas com exemplo de requisição (que não seja vazia):

-
Fluxo do Sistema
Consulte o guia completo com todas as instruções para execução do projeto: Fluxo do Sistema
-
Link do vídeo da arquitetura desenvolvida
-
Documentação DDD
Documentação do sistema (DDD) com Event Storming está disponível através do Miro no link: https://miro.com/app/board/uXjVKYcLnRc=/
Event Storming produzido pelo grupo.
Linguagem Ubíqua utilizada pelo grupo.
-
Código da aplicação
O repositório da aplicação está disponível no github através do link: https://github.com/jacksonwc2/fiap-self-service
O projeto foi construído utilizando o framework NestJS que possibilita modularizar os subdomínios da aplicação, ou seja, conforme os requisitos do tech challenge, temos os principais módulos, sendo eles, Cliente, Produto e Pedido.
Cada módulo possui uma hierarquia de diretórios para melhor adequar os componentes da arquitetura hexagonal.
Como podemos observar, cada módulo possui um diretório chamado core, onde definimos o domínio da aplicação, ou seja, nossas entidades, casos de uso, services, e interfaces para representar portas externas ao core da aplicação.
O módulo também conta com o diretório chamado adapter que por sua vez contém as implementações das portas de entrada e saída para o core da aplicação, ou seja, os diretórios driven e driver.
A estrutura do módulo de cliente é reutilizada em todos os módulos e pode ser observada na imagem abaixo:
Estrutura de pastas da aplicação.
Conforme os requisitos, foi disponibilizado a documentação via Swagger para consumo das APIs. As APIs contemplam cadastro e identificação de clientes, gerenciamento de produtos e pedidos. Observe que os endpoints de checkout de pedidos se trara do cadastro e atualização de status via API.
Rotas da aplicação demonstradas no swagger.
- Fazer o clone do projeto:
git clone [email protected]:jacksonwc2/fiap-self-service.git- Navegar até a pasta raiz do projeto e executar o comando:
docker compose up -d- Para acessar o swagger do projeto colocar no navegador:
localhost:3000/apiRequisito para rodar o projeto localmente é ter instalado em sua máquina a versão 20 do node.
Passo a passo para instalação do node
- Baixar o instalador:
- Vá até a página de downloads do Node.js.
- Baixe o instalador da versão 20 do Node.js para Windows (arquivo .msi).
- Executar o instalador:
- Dê um duplo clique no arquivo baixado para iniciar o instalador.
- Siga as instruções na tela para completar a instalação. Você pode optar por instalar os componentes adicionais recomendados.
- Verificar a instalação:
- Abra o Prompt de Comando (cmd) ou PowerShell.
- Execute
node -vpara verificar a versão instalada do Node.js. - Execute
npm -vpara verificar a versão do npm, o gerenciador de pacotes do Node.js.
- Usar o Homebrew (recomendado):
- Se você não tem o Homebrew instalado, instale-o seguindo as instruções na página oficial do Homebrew.
- Abra o Terminal.
- Execute
brew install node@20para instalar o Node.js versão 20.
- Verificar a instalação:
- Execute
node -vpara verificar a versão instalada do Node.js. - Execute
npm -vpara verificar a versão do npm.
- Execute
Para distribuições baseadas em Debian (como Ubuntu):
-
Adicionar o repositório NodeSource:
-
Abra o Terminal.
-
Execute os seguintes comandos para adicionar o repositório e instalar o Node.js 20:
bashCopy code curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs
-
-
Verificar a instalação:
- Execute
node -vpara verificar a versão instalada do Node.js. - Execute
npm -vpara verificar a versão do npm.
- Execute
Para outras distribuições, como Fedora:
-
Adicionar o repositório NodeSource:
-
Abra o Terminal.
-
Execute os seguintes comandos para adicionar o repositório e instalar o Node.js 20:
bashCopy code curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - sudo dnf install -y nodejs
-
-
Verificar a instalação:
- Execute
node -vpara verificar a versão instalada do Node.js. - Execute
npm -vpara verificar a versão do npm.
- Execute
Uma alternativa para todos os sistemas operacionais é usar o nvm, que permite gerenciar múltiplas versões do Node.js:
-
Instalar o nvm:
- Siga as instruções no repositório oficial do nvm no GitHub.
-
Instalar o Node.js 20:
-
Após instalar o nvm, abra um novo terminal e execute:
bashCopy code nvm install 20 nvm use 20
-
-
Verificar a instalação:
- Execute
node -vpara verificar a versão instalada do Node.js. - Execute
npm -vpara verificar a versão do npm.
- Execute
Seguindo esses passos, você terá o Node.js 20 instalado e pronto para uso no seu sistema operacional.
-
Fazer o clone do projeto:
git clone [email protected]:jacksonwc2/fiap-self-service.git
-
Navegar até a pasta raiz do projeto e instalar as dependencias necessárias da aplicação com o comando:
npm install
-
Subir o banco de dados com o comando:
docker compose up -d fiap-self-service-db-mysql
-
Rodar o projeto localmente através do comando:
npm run start:dev



