← back #03

RVM.MenuNaMao

Digital menu system with QR Code per table, real-time orders, custom Mediator and RabbitMQ.

Overview

RVM.MenuNaMao is a complete digital menu system for restaurants. It allows customers to scan QR Codes on tables to view the menu and place orders directly from their phones. The system operates on two fronts: a Blazor Server admin panel for managing menu, orders and inventory, and a React SPA frontend for customers. Events are propagated asynchronously via RabbitMQ. The technical highlight is the Mediator Pattern implemented from scratch, without MediatR dependency.

Features

  • Multi-restaurant support with unique slug identification
  • Digital menu with categories, items, prices, images and prep time
  • QR Code generation per table with direct menu link (QRCoder)
  • Real-time order processing from phone to admin dashboard
  • Status workflow: Pending -> Preparing -> Ready -> Delivered / Cancelled
  • Inventory control with movements (in, out, adjustment) and low stock alerts
  • Operational dashboard with pending orders, daily totals and revenue
  • Custom Mediator Pattern with Send/Publish, no MediatR
  • Pipeline Behaviors for logging and automatic validation
  • Async messaging via RabbitMQ with publisher and 3 consumers

Technologies

  • .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

Patterns & architecture

  • 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

REST endpoints

Method Path Description
GET /api/menu/{slug} Restaurant menu
GET /api/tables/resolve?token= Resolve table QR Code
POST /api/orders Create order
PUT /api/orders/{id}/status Update order status
GET /api/dashboard Operational dashboard
POST /api/stock/movements Register stock movement
Available for remote work

Let's
talk?

Open to remote .NET opportunities. Reply within 24h.