Seja bem vindo ao repositório da Lanchonete do Bairro API! Este é um desafio proposto pela PósTech (Fiap + Alura) na terceira fase da pós graduação de Software Architecture (8SOAT).
📼 Vídeo de demonstração do projeto desta fase: https://www.youtube.com/watch?v=1xkGzih4IjA
Integrantes do grupo:
Alexis Cesar (RM 356558)
Bruna Gonçalves (RM 356557)
A API foi projetada para gerenciar pedidos de uma lanchonete de bairro, permitindo que os clientes façam seus pedidos através de um totem. A aplicação é containerizada utilizando Docker, orquestrada por Kubernetes (K8s) para garantir escalabilidade e resiliência, e gerenciada por Helm, que automatiza o deployment e rollbacks no cluster Kubernetes (EKS) na nuvem da AWS.
- Arquitetura
- Infraestrutura
- Funcionalidades
- Tecnologias Utilizadas
- Rodando o projeto com Docker-Compose
- Subindo a infraestrutura na AWS com Terraform
A aplicação segue a Arquitetura Limpa, que promove a separação de responsabilidade, facilitando a manutenção e escalabilidade. Esta abordagem permite que a lógica de negócios principal seja independente de qualquer dependência externa, como bancos de dados ou serviços externos.
Diagrama da infraestrutura na nuvem AWS:

- Gerenciamento de Pedidos: Os clientes podem fazer pedidos via o totem da lanchonete.
- Rastreamento de Status de Pedidos: Os clientes e colaboradores podem companhar o status dos pedidos (Recebido, Em Preparação, Pronto, Finalizado).
- Processamento de Pagamentos: Neste momento, o sistema simula o processamento de pagamento através de um webhook.
- Gerenciamento de Produtos: Gerencia os produtos da lanchonete dentro de quatro categorias (Lanche, Bebida, Acompanhamento e Sobremesa).
- .NET 8.0: ASP.NET Core.
- Entity Framework Core: ORM para interações com o banco de dados.
- PostgreSQL: Banco de dados.
- Docker: Plataforma de containerização.
- Kubernetes: Orquestração de contêineres.
- Helm: Gerenciamento de de pacotes kubernetes.
- EKS: Cluster Kubernetes na nuvem da AWS.
- Terraform: Automação de criação de recursos em provedores de nuvem.
⚠ Para que a integração com o Mercado Pago funcione e seja possível utilizar o endpoint 'Realizar Pedido' para gerar QR codes, é necessário uma integração criada e configurada para QR Code Dinâmico através do Mercado Pago Developers. Para mais detalhes de como configurar a integração consulte nossa página sobre a integração na Wiki.
- 🐳 Docker é um pré-requisito para rodar esta aplicação localmente
- 📜 Com o Docker instalado, execute o seguinte comando pelo terminal na pasta raíz do projeto:
docker-compose up- Acesse a aplicação através do swagger pelo seguinte endereço: http://localhost:7575/swagger
Por padrão, o banco de dados não é exposto ao subir os contêineres para evitar conflitos de portas. Para acessar o banco de dados, será necessário executar o seguinte comando na pasta raíz do projeto ao invés do mencionado na etapa anterior:
docker compose -f docker-compose-db-exposed.yaml upAgora você pode acessar o banco de dados através de um sistema gerenciador de banco de dados para o PostgreSQL, como o PgAdmin, no servidor localhost e com a porta padrão do PostgreSQL (5432). As credenciais do banco local podem ser encontrados no arquivo .env na pasta raíz do projeto.
Para subir a infraestrutura do sistema no ambiente cloud, siga os passos mencionados nos seguintes repositórios:
