O RouteZap é um sistema de gerenciamento de webhooks para WhatsApp, construído com Laravel 12, que permite a criação de projetos, o cadastro de endpoints e o envio de payloads para esses endpoints.
- Gerenciamento de Projetos: Crie, edite e exclua projetos. Cada projeto possui um UUID, um token de segurança interno e um token de verificação de webhook únicos.
- Suporte Multi-usuário: O sistema é multi-usuário, e cada usuário tem acesso apenas aos seus próprios projetos, garantindo a privacidade e segurança dos dados.
- Gerenciamento de Endpoints: Para cada projeto, adicione múltiplos endpoints de destino. Cada endpoint pode ter um nome (descrição), uma URL e um status de "ativo/inativo", que pode ser facilmente alterado por um botão de toggle. Apenas endpoints ativos recebem os webhooks.
- Regras de Envio para Endpoints: Defina regras personalizadas para cada endpoint para controlar o despacho de webhooks. As regras podem ser baseadas no número do remetente (emissor) ou do destinatário (receptor), com opções de "igual a" ou "diferente de", e ações de "liberar" ou "bloquear" o envio. Um endpoint pode ter múltiplas regras, e a lógica de avaliação garante que os webhooks sejam enviados apenas quando as condições permitirem.
- Dashboard de Mensagens com Cards: A aba "Mensagens Recebidas" exibe um dashboard com cards. Cada card representa um tipo de mensagem (ou todas) e mostra estatísticas detalhadas, como total de mensagens, números únicos, média de mensagens por número e horários de pico de atividade. A visualização detalhada é feita em um modal com navegação interna, paginação e busca.
- Não Salva Status: Mensagens de status do WhatsApp (como "entregue" ou "lida") são automaticamente ignoradas para não poluir seu histórico.
- Visualização de Dispatches: Monitore cada envio (dispatch) de um payload para os seus endpoints. O histórico de envios de cada endpoint é apresentado em um modal com navegação interna entre a lista paginada e os detalhes completos de cada envio.
- Interface Moderna: A tela de visualização de projetos utiliza abas e modais para uma experiência de usuário limpa e interativa. Os botões de ação foram refinados para serem mais compactos e baseados em ícones, e a seção "Ações do Projeto" foi otimizada para melhor usabilidade. Todos os formulários em modais agora utilizam submissão AJAX com tratamento de erros dinâmico, proporcionando feedback imediato e uma experiência de usuário mais fluida e responsiva.
O RouteZap é construído com uma arquitetura robusta para garantir escalabilidade e manutenibilidade:
- Backend: Laravel 12 (PHP 8.2)
- Frontend: Alpine.js, Tailwind CSS, Vite
- Banco de Dados: MariaDB
- Cache & Fila: Redis (utilizado para cache e para o sistema de filas assíncronas).
- Autenticação: Autenticação padrão do Laravel com login social via Facebook e Instagram.
-
Internacionalização (i18n): Suporte para múltiplos idiomas, com traduções iniciais para Português (pt-BR) para termos chave e descrições.
-
Formatação de Números de Telefone: Implementação de uma função auxiliar para formatar números de telefone no padrão brasileiro (+55 (XX) XXXX-XXXX ou +55 (XX) XXXXX-XXXX) em todas as exibições relevantes.
-
Serviço de Avaliação de Regras (
EndpointRuleEvaluatorService): A lógica complexa de avaliação das regras de envio de webhooks foi isolada em um serviço dedicado. Isso garante a responsabilidade única, facilita a manutenção e melhora a testabilidade do código. -
Processamento Assíncrono de Dispatches (
DispatchWebhookJob): O envio de webhooks para os endpoints de destino agora é processado de forma assíncrona através de um Job na fila. Isso otimiza a performance da aplicação ao receber novos webhooks (não bloqueando a resposta imediata), melhora a resiliência com retentativas em caso de falha e permite maior escalabilidade para lidar com grandes volumes de mensagens.
Para rodar o projeto localmente, você precisa ter o Docker e o Docker Compose instalados.
-
Clone o repositório:
git clone https://github.com/mlalbuquerque/routezap.git cd routezap -
Suba os containers:
A partir da pasta
infra, execute o seguinte comando para iniciar os containers do ambiente de desenvolvimento:cd infra docker-compose up -d -
Acesse a aplicação:
A aplicação estará disponível em http://localhost.
Para executar os testes, acesse o container da aplicação e rode o composer test:
cd infra
docker-compose exec backend bash
composer testForam adicionados testes de unidade abrangentes para o EndpointRuleEvaluatorService e o DispatchWebhookJob, garantindo a robustez e a correção das novas funcionalidades.
A API do RouteZap possui os seguintes endpoints para o recebimento de webhooks:
-
Verificação do Webhook (GET): Este endpoint é usado pelo WhatsApp para verificar a autenticidade do seu webhook. Ele agora requer um
hub.verify_tokenque deve corresponder aotoken de verificaçãoúnico do seu projeto.GET /api/webhooks/{uuid}?hub.mode=subscribe&hub.challenge=CHALLENGE_ACCEPTED&hub.verify_token=YOUR_VERIFICATION_TOKEN -
Recebimento do Webhook (POST):
POST /api/webhooks/{uuid}
- Faça um fork do projeto.
- Crie uma branch para a sua feature (
git checkout -b my-new-feature). - Faça o commit das suas alterações (
git commit -am 'Add some feature'). - Faça o push para a branch (
git push origin my-new-feature). - Crie um novo Pull Request.
O RouteZap é um software de código aberto licenciado sob a MIT license.