Skip to content

mlalbuquerque/routezap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RouteZap

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.

Principais Funcionalidades

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

Arquitetura e Melhorias Recentes

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.

Melhorias Arquitetônicas Recentes:

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

Ambiente de Desenvolvimento Local

Para rodar o projeto localmente, você precisa ter o Docker e o Docker Compose instalados.

  1. Clone o repositório:

    git clone https://github.com/mlalbuquerque/routezap.git
    cd routezap
  2. 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
  3. Acesse a aplicação:

    A aplicação estará disponível em http://localhost.

Testes

Para executar os testes, acesse o container da aplicação e rode o composer test:

cd infra
docker-compose exec backend bash
composer test

Foram adicionados testes de unidade abrangentes para o EndpointRuleEvaluatorService e o DispatchWebhookJob, garantindo a robustez e a correção das novas funcionalidades.

Endpoints da API

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_token que deve corresponder ao token 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}
    

Como Contribuir

  1. Faça um fork do projeto.
  2. Crie uma branch para a sua feature (git checkout -b my-new-feature).
  3. Faça o commit das suas alterações (git commit -am 'Add some feature').
  4. Faça o push para a branch (git push origin my-new-feature).
  5. Crie um novo Pull Request.

Licença

O RouteZap é um software de código aberto licenciado sob a MIT license.

About

Routing Whatsapp webhooks

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors