Sistema de Rifas – Plataforma Web Escalable

Sistema de Rifas – Plataforma Web Escalable

19 de enero de 2026
LaravelReactNextJSNestJSDockerVPSDokploy

Desenvolvi um sistema completo de rifas, focado em escalabilidade, desacoplamento e boa experiência do usuário, utilizando uma arquitetura moderna baseada em Clean Architecture e DDD.

No backend, utilizei Laravel como core da aplicação, aplicando o Repository Pattern para desacoplar regras de negócio da camada de persistência, garantindo maior manutenibilidade e facilidade de evolução do sistema. Além disso, foi desenvolvido um serviço em NestJS responsável pela integração com WhatsApp, onde implementei toda a lógica de:

Vinculação da conta do WhatsApp

Exposição e leitura de QR Code

Verificação de status da conexão

Envio automatizado de mensagens (notificações e confirmações)

No frontend, a solução foi dividida em duas aplicações:

Dashboard administrativo em React, voltado para a gestão de rifas, tickets, usuários e acompanhamento de vendas

Frontend público em Next.js, voltado para os clientes, contendo:

Página principal para visualização das rifas e compra de tickets

Área de consulta, onde o usuário pode verificar seus dados e tickets adquiridos

Ambas as aplicações frontend foram desenvolvidas seguindo arquitetura limpa, separação clara de responsabilidades e padrões de componentes, facilitando manutenção, reutilização e escalabilidade do código.

Para infraestrutura e entrega contínua, o projeto foi containerizado com Docker e implantado em um VPS utilizando Dokploy, permitindo um fluxo de CI/CD automatizado, com deploy seguro, versionamento e facilidade de rollback.

Esse projeto demonstra minha experiência no desenvolvimento de aplicações full stack escaláveis, integração de serviços externos (WhatsApp), arquitetura bem definida e boas práticas de engenharia de software.

Detalles del Proyecto

Proceso y características

Frontpage (Cliente) – Formulário avançado de compra de tickets

Frontpage (Cliente) – Formulário avançado de compra de tickets

No frontpage (Next.js), desenvolvemos o fluxo principal da aplicação para o cliente: um formulário avançado multi-etapas para compra de tickets, validação de dados e envio de comprovante de pagamento. Esse fluxo foi pensado como o “core” do produto, com foco em clareza, segurança e uma experiência simples para o usuário.

O formulário foi construído com React Hook Form e Zod, utilizando schemas para validações consistentes por etapa (campos obrigatórios, formatos, regras e mensagens). A navegação é feita por um wizard (stepper), onde o usuário avança somente após a validação correta da etapa atual. ** Estrutura do fluxo (3 etapas)**

Seleção de compra (tickets / números) Seleção do preço (ex.: VES / USD) Definição da quantidade de números Cálculo automático do total a pagar Opção de atribuição automática de números Dados do comprador Nome e identificação Preferência de confirmação (WhatsApp ou Email) Campo de telefone com DDI (formatação e validação) Pagamento e comprovante

Seleção do método de pagamento (ex.: Pago Móvil)

Exibição de dados do recebedor com opção de copiar para a área de transferência Upload do comprovante de pagamento (PNG/JPG/PDF) Campo de referência (ex.: últimos 6 dígitos)

**Destaques técnicos **

Validação robusta com React Hook Form + Zod por etapa (schemas isolados) Componentização e organização seguindo arquitetura limpa / DDD Experiência orientada a conversão: stepper, resumo da compra e total sempre visível Fluxo preparado para manutenção e evolução, com regras desacopladas e fácil extensão

Painel Administrativo – Notificações de compras

Painel Administrativo – Notificações de compras

Após a finalização de uma compra, o sistema executa um processo em segundo plano responsável por gerar notificações automáticas no painel administrativo.

Foi desenvolvida uma seção dedicada de notificações, onde o administrador pode visualizar rapidamente:

Nome do comprador

Quantidade de tickets adquiridos

Valor total da compra

Status da notificação (lida / não lida)

Esse fluxo permite maior controle e rastreabilidade das compras, facilitando o acompanhamento das transações e o registro administrativo de todas as operações realizadas no sistema.

Painel Administrativo – Validação e aprovação de compras

A partir de uma notificação, o administrador pode acessar o detalhe completo da compra, onde é possível validar, ajustar e aprovar a solicitação.

Nesse detalhe, o administrador pode:

Visualizar todas as informações da compra

Conferir o comprovante de pagamento enviado pelo cliente

Aprovar ou rejeitar a ordem de compra

Ajustar a quantidade de tickets, caso o valor pago esteja incorreto (pagamento a mais ou a menos)

Após a aprovação, o sistema realiza a atribuição automática dos números, garantindo previamente que os números não estejam associados a nenhum outro cliente, mantendo a integridade e consistência dos dados.

Estabelecendo comunicação com o sistema via WhatsApp

Após a aprovação ou rejeição da compra, o cliente é notificado automaticamente de acordo com o canal selecionado no momento da compra (WhatsApp ou Email).

Para o envio via WhatsApp, o sistema necessita que um número telefônico esteja conectado à plataforma. No painel administrativo, existe no header um indicador visual que informa o status da conexão (conectado ou desconectado).

Quando a conexão está desativada, o administrador pode vinculá-la facilmente por meio da leitura de um QR Code, conectando o número ao WhatsApp. Uma vez estabelecida a conexão, o sistema passa a enviar automaticamente as notificações relacionadas ao status da compra.

Esse fluxo permite uma comunicação direta, automatizada e controlada entre o sistema e o cliente.

Simulação de envio de notificações via WhatsApp

Para validar o fluxo completo, foi realizada uma simulação de compra, permitindo visualizar o template de notificação recebido diretamente no telefone do cliente.

Após a ação no painel administrativo (aprovação ou rejeição), o backend dispara automaticamente a notificação, utilizando o sistema de mensageria via WhatsApp previamente conectado. O cliente recebe a mensagem com as informações da compra e seu respectivo status, confirmando o funcionamento correto do fluxo de comunicação.

Essa simulação garante:

Validação do template de mensagem

Confirmação do disparo automático pelo backend

Confiabilidade da integração com WhatsApp

Registro massivo de números (Admin)

O painel administrativo permite o registro massivo de números para completar os números restantes de uma rifa de forma controlada.

Esse processo é executado em segundo plano, evitando bloqueios no sistema, já que envolve a verificação dos números já atribuídos, garantindo que não ocorram duplicidades.

Os números gerados por esse fluxo não impactam o valor total arrecadado, pois representam uma ação administrativa interna e não uma compra realizada por um cliente.

Esse mecanismo garante:

Preenchimento eficiente e seguro das rifas

Execução assíncrona sem afetar a performance da aplicação

Integridade dos dados e separação clara entre ações administrativas e compras reais

Filtros avançados e controle de compras

Filtros avançados e controle de compras

O sistema conta com um filtro avançado para listagem e gerenciamento das compras de tickets, permitindo localizar registros de forma rápida e eficiente durante um evento.

Os registros incluem informações como:

Número da rifa

Nome do comprador

Quantidade e números de tickets

WhatsApp

Referência de pagamento

Status da compra

Além da busca avançada, o painel oferece:

Ranking de compras, exibindo os clientes que adquiriram mais tickets

Lista de bloqueios, utilizada para identificar e gerenciar usuários bloqueados pelo sistema, geralmente por tentativas de fraude ou comportamento suspeito

Essas funcionalidades garantem maior controle operacional, segurança e agilidade na gestão das rifas.