Criei um Sistema de Disparo WhatsApp com IA em 10 Minutos

Links importantes

				
					Crie um sistema completo de disparos em massa via WhatsApp chamado ZapBlast usando a biblioteca Baileys. Arquitetura: Backend Node.js + Express na porta 3001, Frontend React + Vite na porta 5173, IP da máquina é 76.13.173.169, todos os serviços acessíveis via http://76.13.173.169:[porta], CORS configurado para aceitar qualquer origin.

BACKEND (Node.js):

Dependências: @whiskeysockets/baileys, express, socket.io, cors, multer, uuid, qrcode, fs-extra, nodemon (dev).

Estrutura de pastas:
backend/src/server.js
backend/src/managers/connectionManager.js
backend/src/managers/dispatchManager.js
backend/src/routes/connections.js
backend/src/routes/dispatches.js
backend/sessions/ (sessões Baileys por conexão)
backend/uploads/ (arquivos enviados)
backend/data/ (connections.json e dispatches.json para persistência)

Rotas de Conexões (/api/connections): POST / para criar nova conexão com id uuid e nome, GET / para listar todas com status, DELETE /:id para remover e limpar sessão, POST /:id/connect para iniciar Baileys e emitir QR via Socket.IO, POST /:id/disconnect para desconectar.

Rotas de Disparos (/api/dispatches): POST / para criar disparo com campos connectionId, name, type (text ou file), message, file via multer, contacts como JSON array de strings, delay em ms. GET / para listar com progresso. GET /:id para detalhe. DELETE /:id para cancelar. POST /:id/start para iniciar. POST /:id/pause para pausar. POST /:id/resume para retomar.

Socket.IO eventos emitidos: qr_update com { connectionId, qr em base64 png }, connection_status com { connectionId, status: connecting | open | close | qr }, dispatch_progress com { dispatchId, sent, failed, total, currentContact, status }.

Lógica de conexão Baileys: usar useMultiFileAuthState com pasta sessions/{connectionId}/, ao conectar verificar se já existe sessão salva e reconectar automaticamente sem novo QR, tratar DisconnectReason e atualizar status via Socket.IO, armazenar instâncias ativas em Map.

Lógica de disparo: processar contatos em fila com delay configurável, formatar número removendo espaços traços parênteses e adicionar 55 se não tiver código de país, adicionar @s.whatsapp.net, enviar texto com sock.sendMessage(jid, { text: mensagem }), enviar arquivo detectando mimetype e usando sock.sendMessage(jid, { document: buffer, mimetype, fileName }) ou image/video conforme tipo, registrar status de cada envio com timestamp, status do disparo: pending | running | paused | completed | cancelled, emitir dispatch_progress via Socket.IO a cada envio.

Persistência: salvar connections.json e dispatches.json em backend/data/ e carregar ao iniciar o servidor.

FRONTEND (React + Vite):

Dependências: react, react-dom, react-router-dom, socket.io-client, axios, react-hot-toast, lucide-react.

Arquivo frontend/.env com VITE_API_URL=http://76.13.173.169:3001 e VITE_SOCKET_URL=http://76.13.173.169:3001.

Design: dashboard dark industrial com paleta verde WhatsApp #25D366 sobre fundo escuro #0d1117 e #161b22, estilo terminal meets modern SaaS, tipografia fonte monospace para dados técnicos e sans-serif moderna para títulos, bordas sutis, sem shadows excessivas.

Layout geral: sidebar fixa com navegação Conexões e Disparos, header com nome ZapBlast e contador de conexões ativas, React Router com rotas /connections e /dispatches.

Página /connections: lista de cards com nome, status badge colorido e número conectado, botão Nova Conexão abre modal com campo nome, cada card tem botões Conectar que abre modal com QR Code atualizado em tempo real via Socket.IO, Desconectar e Excluir, QR exibido como img src base64 com loading state e mensagem Escaneie com o WhatsApp, badges: amarelo Aguardando QR, verde Conectado, vermelho Desconectado.

Página /dispatches: lista de disparos com nome, conexão, tipo, barra de progresso, status e data, botão Novo Disparo abre drawer lateral com campos: seleção de conexão (dropdown só conexões com status open), nome, tipo texto ou arquivo, textarea para mensagem se texto, input file para qualquer arquivo se arquivo, textarea para colar números um por linha ou upload de txt/csv, slider para delay em segundos, cada item da lista tem barra de progresso, botões Iniciar Pausar Retomar Cancelar, status badge animado quando rodando, contadores de enviados e falhas com ícones.

Socket.IO no frontend: conectar em VITE_SOCKET_URL ao iniciar app, ouvir qr_update e atualizar QR em tempo real, ouvir connection_status e atualizar status dos cards, ouvir dispatch_progress e atualizar barras de progresso.

Crie também na raiz um README.md com instruções de instalação e acesso, e um package.json raiz com scripts "backend": "cd backend && npm run dev" e "frontend": "cd frontend && npm run dev".

Observações importantes: cada conexão Baileys com sua própria pasta sessions/{connectionId}/, usar useMultiFileAuthState para persistir sessão, formatar números automaticamente, multer salvando em uploads/ com nome uuid, implementar delay entre envios para não banir número, tratar todos os erros com try/catch e retornar respostas JSON adequadas, o frontend deve funcionar completamente em http://76.13.173.169:5173.

				
			
Claude Code: Criei uma API de Disparos em Massa do Zero (Só com a Voz)

Claude Code: Criei uma API de Disparos em Massa do Zero (Só com a Voz)


Bora pra ação! No último vídeo, mostramos como instalar uma API existente com o Claude Code. Hoje, vamos levar isso a um nível absurdo: vamos pedir para a IA criar um sistema de disparos em massa do zero, com backend, frontend e tudo mais, apenas descrevendo o que queremos.

Você vai testemunhar o poder da IA como uma ferramenta de desenvolvimento, construindo uma aplicação inteira através de uma única instrução. É o futuro acontecendo agora!

Material de Apoio

O prompt completo que usamos para gerar a aplicação, pronto para copiar e colar, está disponível logo acima nesta página.

Passo 1: O "Briefing" - Ensinando a IA a Criar um Prompt

A qualidade da resposta de uma IA depende da qualidade da pergunta. Em vez de criar um prompt complexo manualmente, fizemos o impensável: pedimos ao próprio Claude Code para criar o prompt perfeito para nós.

O que dissemos a ele foi:

"Claude, crie um prompt para enviar para o Claude Code criar um sistema de disparo usando a API de WhatsApp Baileys, com backend e frontend separados. Backend em Node, frontend em React. Quero poder criar conexões, conectar números e realizar disparos de texto e arquivos em massa. Tudo deve rodar localmente usando o IP da minha máquina."

Ele gerou um prompt longo e detalhado. Então, pedimos para ele formatar tudo em um único bloco de texto, pronto para ser copiado e colado no terminal. É esse prompt que usaremos a seguir.

Passo 2: Ativando o Claude Code e Dando a Ordem

O processo inicial é o mesmo do tutorial anterior:

  1. Conecte-se à sua VPS da Hostinger (que já vem com Claude Code).
  2. Inicie o assistente com o comando Claude.
  3. Faça o onboarding inicial, autorizando sua conta via navegador.
  4. Peça para conversar em português: Podemos conversar em português brasil?
  5. Agora, a parte principal: copie o prompt completo da nossa página de apoio e cole-o diretamente no terminal com o botão direito do mouse. Pressione Enter.

Passo 3: A IA em Ação (Planejamento e Construção)

O que acontece a seguir é um espetáculo da engenharia de software automatizada. O Claude Code iniciou um processo de criação em várias etapas:

1. Planejamento

A IA começou a "pensar", consumindo tokens para criar um plano de ação detalhado. Ela decidiu que precisaria:

  • Criar a estrutura de diretórios do projeto (que ela batizou de "ZapBlast").
  • Desenvolver todo o backend em Node.js.
  • Desenvolver a interface do frontend em React.
  • Instalar todas as dependências necessárias.
  • Verificar e testar tudo.

2. Execução Assistida

A IA começou a executar o plano, pedindo sua confirmação a cada passo importante: "Posso criar o arquivo package.json?", "Posso criar o arquivo server.js?". Você só precisa ir confirmando com "sim".

A Mágica da Autocorreção em Tempo Real

No meio do processo, algo incrível aconteceu. A IA tentou instalar as dependências do backend e percebeu: "Não há Node.js instalado nesta máquina!".

Sem qualquer intervenção humana, ela mesma diagnosticou o problema e iniciou a instalação do Node.js. Após concluir, ela retomou exatamente de onde parou. Ela cria, testa, encontra o erro e o corrige sozinha.

3. Finalização e Entrega

Após cerca de 10-12 minutos, o Claude Code finalizou todo o processo. Ele havia criado 18 arquivos de backend e front, instalado todas as dependências, buildado o projeto e, por fim, iniciado os servidores.

Ao final, ele nos deu a URL de acesso. O resultado? Uma aplicação web funcional, chamada ZapBlast, com campos para criar conexões, gerar QR Codes e uma interface para disparos em massa de texto e arquivos.

Conclusão: A IA é sua Nova Estagiária Superpoderosa

Este experimento prova que a IA não veio para roubar empregos, mas para nos dar superpoderes. Uma tarefa que levaria dias para um desenvolvedor júnior foi executada em minutos por um assistente de IA. A barreira de entrada para criar tecnologia nunca foi tão baixa.

Não brinque com a IA, não tenha medo dela. Faça dela a sua "escravinha". Use-a para acelerar seus projetos, testar ideias e alcançar resultados que antes pareciam impossíveis.

Aproveite a janela de oportunidade. O futuro é agora. Tamo junto!