Ctrl+Eat é mais do que uma simples restaurente fast food; é uma experiência gastronômica em constante evolução. Localizada no coração do bairro (e agora em grande expansão!), nosso restaurante combina o sabor autêntico dos clássicos do fast food com a inovação da tecnologia de autoatendimento. Aqui, os clientes podem personalizar seus pedidos, escolhendo entre uma variedade de ingredientes frescos e molhos exclusivos. Nossa equipe dedicada garante que cada pedido seja preparado com perfeição. Além disso, oferecemos um ambiente moderno e acolhedor, onde os clientes podem relaxar e desfrutar de suas refeições. Com o sistema construído exclusivamente para a Ctrl+Eat, prometemos uma experiência deliciosa, rápida e personalizada para todos os amantes de fast food. Venha saborear o futuro da alimentação rápida!
- Event Storming
- Dockerfile & docker-compose
- Mapa de Navegação e uso de APIs
- Domínios
- Mapa de Contexto
- Funcionalidades
- Diagrama de Relacionamento de Entidades
- Diagrama de Arquitetura
Este projeto utiliza o Docker para executar os serviços necessários para a aplicação funcionar corretamente. Para facilitar a execução, foi criado um arquivo docker-compose.yml
que contém todos os serviços necessários.
Ao executar o comando para inicializar os containers, o Docker irá baixar as imagens necessárias e executar os seguintes containers:
- PostgreSQL (16.0)
- pgAdmin (7.8)
- Web API (.NET 7)
Para executar esta aplicação são necessárias as seguintes dependências:
Sugiro utilizar o WSL2 para executar esta aplicação.
Primeiro, atualize as dependências do sistema:
sudo apt update && sudo apt upgrade
Remova as versões antigas:
sudo apt remove docker docker-engine docker.io containerd runc
Instale os pré-requisitos do Docker:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
Adicione o repositório do Docker nos sources do Ubuntu:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instale o Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Dê as permissões para rodar o Docker com o usuário atual:
sudo usermod -aG docker $USER
Execute o Docker:
sudo service docker start
Instale o Makefile:
sudo apt install make
Instale o JQ:
sudo apt install jq
Uma vez com todas as dependências instaladas, podemos prosseguir!
Este projeto utiliza o Kubernetes para executar os serviços necessários para a aplicação funcionar corretamente. Para facilitar a execução, foi criado uma pasta infra
que contém todos os manifestos necessários.
Clique aqui para mais informações sobre o Kubernetes deste projeto.
1 - Inicialize os containers do banco de dados:
make kube-db-up
Aguarde os containers do banco de dados subirem e execute o comando abaixo para verificar se os pods estão no estado Running:
kubectl get pods --watch
2 - Inicialize os containers da aplicação:
make kube-api-up
Aguarde os containers da aplicação subirem e execute o comando abaixo para verificar se os pods estão no estado Running:
kubectl get pods --watch
3 - Realize o seed dos dados:
make seed-kube
Caso queira testar a aplicação, vá para a seção Testando a aplicação via Postman.
Caso queira derrubar os containers, siga os passos abaixo:
4 - Derrubando os containers da aplicação:
make kube-api-down
5 - Derrubando os containers do banco de dados:
make kube-db-down
1 - Executando as APIs via Postman
- Importar o arquivo da collection.
- Importar o arquivo do environment Kubernetes.
2 - Criando um Cliente
- Com a collection e environment importados, execute a rota que está em Clientes > Cadastrar Cliente.
- A collection está configurada para pegar o id do cliente criado e salvar no environment, para que possa ser utilizado nas próximas requisições.
- Para verificar se o cliente foi criado, execute a rota que está em Clientes > Obter todos os clientes.
3 - Criando um Pedido
- Execute a rota que está em Pedidos > Criar um pedido para um cliente.
- A collection está configurada para pegar o id do pedido criado e salvar no environment, para que possa ser utilizado nas próximas requisições.
- Para verificar se o pedido foi criado, execute a rota que está em Pedidos > Visualizar um pedido.
- Uma vez que o pedido foi criado, o status do pedido será Created.
4 - Adicionando itens ao Pedido
- Execute a rota que está em Pedidos > Adicionar um lanche ao pedido.
- Execute a rota que está em Pedidos > Adicionar um acompanhamento ao pedido.
- Execute a rota que está em Pedidos > Adicionar uma bebida ao pedido.
- Execute a rota que está em Pedidos > Adicionar uma sobremesa ao pedido.
- Para verificar se os itens foram adicionados ao pedido, execute a rota que está em Pedidos > Visualizar um pedido.
- ATENÇÃO: Os pedidos exibidos na rota Pedidos > Visualizar um pedido estarão nos seguintes status Received, OnGoing ou Done. Os pedidos Created estão aguardando o pagamento e os pedidos Completed já foram retirados pelo cliente.
5 - Realizando o checkout do Pedido
- Execute a rota que está em Pedidos > Realizar o checkout do pedido.
- Para verificar se o checkout foi realizado, execute a rota que está em Pedidos > Visualizar um pedido.
6 - Simulando o hook de Pagamento do Pedido
- Execute a rota que está em Pedidos > Simular o hook de pagamento para aprovar o pagamento.
- Para verificar se o pagamento foi realizado, execute a rota que está em Pedidos > Visualizar um pedido.
- Uma vez que o pagamento foi realizado, o pedido é disponibilizado para a cozinha, e o status do pedido será alterado para Received.
7 - Visualizando os pedidos prontos para serem iniciados na Cozinha
- Execute a rota que está em Pedidos > Visualizar os pedidos pagos e não iniciados.
- Será retornado de forma ordenada, os pedidos no status buscado, no caso Received.
8 - Iniciando um pedido na Cozinha
- Execute a rota que está em Pedidos > Iniciar preparo do pedido.
- Para verificar se o pedido foi iniciado na cozinha, execute a rota que está em Pedidos > Visualizar um pedido.
- Uma vez que o pedido foi iniciado na cozinha, o status do pedido é alterado para OnGoing.
9 - Pronto para retirar um pedido na Cozinha
- Execute a rota que está em Pedidos > Pedido pronto para retirada.
- Para verificar se o pedido está pronto para retirar, execute a rota que está em Pedidos > Visualizar um pedido.
- Uma vez que o pedido está pronto para retirar, o status do pedido é alterado para Done.
10 - Pedido entregue ao Cliente
- Execute a rota que está em Pedidos > Pedido entregue ao cliente.
- Para verificar se o pedido foi entregue ao cliente, execute a rota que está em Pedidos > Visualizar um pedido.
- Uma vez que o pedido foi entregue ao cliente, o status do pedido é alterado para Completed.