OnDelivery: a arquitetura por trás da plataforma
Como eu estruturei o OnDelivery: monorepo, vários serviços em NestJS e Express.js, mensageria com BullMQ e RabbitMQ e entrega em contêineres.

1. Contexto & Desafio de Engenharia
O OnDelivery é a plataforma que eu desenvolvo para restaurantes e deliveries: pedidos, PDV, entregas, catálogo, estoque, caixa, cupons, fidelidade e uma loja online para o cliente final, além de apps para garçom, entregador, cozinha (KDS), totem e cardápio QR. Organizei o código como um monorepo com vários serviços. O backend usa NestJS e Express.js sobre PostgreSQL, com BullMQ e RabbitMQ no processamento assíncrono; os front-ends são em Next.js e React. Tudo roda em contêineres, com testes e CI no GitHub Actions.
O que mais exige atenção numa plataforma assim: • Manter claras as fronteiras entre os pacotes do monorepo, mesmo com repositório e pipeline compartilhados. • Coordenar contratos, configuração e consistência de dados entre serviços independentes. • Garantir entrega, idempotência e rastreabilidade das mensagens entre os serviços. • Manter as imagens de contêiner enxutas, seguras e reproduzíveis.
2. Decisões
A arquitetura se apoia em quatro escolhas: • Monorepo: todos os pacotes num só repositório, com workspaces. • Vários serviços: cada serviço com o próprio código e contêiner, orquestrados com Docker Compose. • Mensageria assíncrona: BullMQ e RabbitMQ entre os serviços. • Contêineres: Dockerfiles e Docker Compose para construir e subir tudo.