← voltar #03

RVM.MenuNaMao

Sistema de cardapio digital com QR Code por mesa, pedidos em tempo real, Mediator customizado e RabbitMQ.

Visao geral

RVM.MenuNaMao e um sistema completo de cardapio digital para restaurantes. Permite que clientes escaneiem QR Codes nas mesas para visualizar o cardapio e fazer pedidos direto do celular. O sistema opera em dois fronts: um painel admin Blazor Server para gerenciar cardapio, pedidos e estoque, e um frontend React SPA para os clientes. Eventos sao propagados de forma assincrona via RabbitMQ. O destaque tecnico e o Mediator Pattern implementado do zero, sem dependencia do MediatR.

Funcionalidades

  • Suporte multi-restaurante com identificacao por slug unico
  • Cardapio digital com categorias, itens, precos, imagens e tempo de preparo
  • Geracao de QR Code por mesa com link direto para o cardapio (QRCoder)
  • Processamento de pedidos em tempo real do celular ao dashboard admin
  • Workflow de status: Pending -> Preparing -> Ready -> Delivered / Cancelled
  • Controle de estoque com movimentacoes (entrada, saida, ajuste) e alertas de estoque baixo
  • Dashboard operacional com pedidos pendentes, totais diarios e receita
  • Mediator Pattern customizado com Send/Publish, sem MediatR
  • Pipeline Behaviors para logging e validacao automatica
  • Mensageria assincrona via RabbitMQ com publisher e 3 consumers

Tecnologias

  • .NET 10
  • ASP.NET Core 10
  • Blazor Server
  • EF Core 10
  • PostgreSQL
  • Npgsql 10.0.1
  • RabbitMQ 7.x
  • QRCoder 1.6
  • React 19
  • TypeScript 5.7
  • Vite 6
  • Serilog
  • xUnit
  • Moq

Padroes & arquitetura

  • Clean Architecture (4 camadas)
  • Custom Mediator Pattern
  • Pipeline Behavior Pattern
  • CQRS (7 commands, 8 queries)
  • Domain Events (3 notification types)
  • Repository Pattern
  • Assembly Scanning via Reflection

Endpoints REST

Method Path Descricao
GET /api/menu/{slug} Cardapio do restaurante
GET /api/tables/resolve?token= Resolver QR Code da mesa
POST /api/orders Criar pedido
PUT /api/orders/{id}/status Atualizar status do pedido
GET /api/dashboard Dashboard operacional
POST /api/stock/movements Registrar movimentacao de estoque
Disponivel para trabalho remoto

Vamos
conversar?

Aberto a oportunidades remotas com .NET. Resposta em ate 24h.