Plataforma SaaS profissional multi-tenant para campanhas de WhatsApp em massa com IA integrada
🎯 Recursos • ✨ Novidades v0.0.4 • 🛠️ Instalação • 📚 Documentação • 🤝 Contribuição
- ✅ Editor Visual Drag & Drop - Crie fluxos de conversação sem código usando ReactFlow
- ✅ 12+ Tipos de Nodes - Text, Image, Video, Audio, Document, Condition, Delay, AI, HTTP REST, Integrations, Stop
- ✅ Processamento com IA - OpenAI/Groq integrado nos fluxos
- ✅ Condições Inteligentes - Ramificações baseadas em respostas
- ✅ Integrações Nativas - Chatwoot e Perfex CRM dentro dos fluxos
- ✅ Sistema de Sessões - Rastreamento completo de estado por contato
- ✅ Webhooks Bidirecionais - Resposta automática a mensagens recebidas
- ✅ Importação de Leads - Sincronize leads do Perfex CRM como contatos
- ✅ Sincronização Bidirecional - Mantenha dados atualizados entre sistemas
- ✅ Mapeamento de Campos - Configure campos customizados
- ✅ Node Dedicado - Use Perfex diretamente nos fluxos interativos
- ✅ Provedores Configuráveis - Cada tenant escolhe entre WAHA, Evolution API ou QuePasa
- ✅ Flexibilidade Total - Habilite apenas os provedores necessários
- ✅ Interface Simplificada - Seleção visual de provedores
- ✅ HMAC-SHA256 - Validação criptográfica de webhooks
- ✅ Idempotência - Detecção automática de mensagens duplicadas
- ✅ URLs Dedicadas - Webhook único por conexão
- ✅ +19 Componentes - Novos componentes React para fluxos
- ✅ +10 Services - Nova arquitetura de serviços
- ✅ +9 Rotas API - Endpoints para campanhas interativas
- ✅ +5 Modelos Prisma - Novos models no banco de dados
- ✅ Documentação Completa - Guias, API e testes
📖 Ver Changelog Completo | Guia de Campanhas Interativas
O Astra Campaign é uma plataforma SaaS multi-tenant completa e open-source para gerenciamento e execução de campanhas de WhatsApp em massa e interativas. Desenvolvido com arquitetura moderna, oferece recursos enterprise como isolamento total de dados por empresa, sistema de quotas, backup/restore automatizado, inteligência artificial para personalização de mensagens, flow builder visual para conversas interativas, suporte a múltiplos provedores WhatsApp (WAHA, Evolution API e QuePasa), além de integrações com Chatwoot e Perfex CRM.
🔥 Open Source & SaaS Ready: Projeto totalmente gratuito com arquitetura multi-tenant pronta para comercialização. Sem ligação alguma com o WhatsApp oficial.
- 🎨 Flow Builder Visual: Crie conversas interativas com editor Drag & Drop (ReactFlow)
- 🤖 Campanhas Interativas: Fluxos bidirecionais com IA, condições e integrações
- 🏢 Multi-Tenant (SaaS): Isolamento completo de dados por empresa
- 🔌 Múltiplos Provedores: WAHA API, Evolution API e QuePasa (configurável por tenant)
- 🤖 IA Integrada: OpenAI e Groq para mensagens personalizadas e processamento de respostas
- 💬 Integração Chatwoot: Importação de contatos e criação de tickets
- 💼 Integração Perfex CRM: Sincronização de leads e dados bidirecionais
- 🎲 Randomização Inteligente: Textos, imagens, vídeos e arquivos aleatórios
- 🔄 Multi-Sessão com Failover: Distribuição inteligente de envios
- 🔐 Webhooks Seguros: HMAC-SHA256 para validação de webhooks
- 💾 Backup & Restore: Sistema automatizado de backup e restauração
- 📊 Analytics Completo: Relatórios detalhados com exportação CSV
- 👥 Sistema de Roles: SUPERADMIN, ADMIN e USER
- ⚖️ Sistema de Quotas: Controle de limites por tenant
- 🎨 White Label: Personalização completa da marca
- 🐳 Deploy Simplificado: Docker Swarm com Traefik
- ✅ Editor Visual Drag & Drop: Construa fluxos complexos com interface intuitiva
- ✅ 12+ Tipos de Nodes: Trigger, Text, Image, Video, Audio, Document, Condition, Delay, AI, HTTP REST, Integrations, Stop
- ✅ Nodes de Condição: Crie ramificações baseadas em respostas dos contatos
- ✅ Processamento com IA: OpenAI e Groq integrados para respostas inteligentes
- ✅ HTTP REST Node: Faça requisições a APIs externas durante o fluxo
- ✅ Integração Chatwoot: Crie tickets automaticamente no Chatwoot
- ✅ Integração Perfex: Atualize leads no CRM durante conversas
- ✅ Sistema de Sessões: Rastreamento completo do estado de cada contato
- ✅ Webhooks Bidirecionais: Receba e responda mensagens automaticamente
- ✅ Preview de Fluxo: Visualize o fluxo completo antes de publicar
- ✅ Simulação: Teste fluxos antes de ativar para contatos reais
- ✅ Importação de Leads: Busque leads do Perfex e converta em contatos
- ✅ Sincronização Automática: Mantenha dados atualizados entre sistemas
- ✅ Configuração por Tenant: Cada empresa usa seu próprio Perfex
- ✅ Node de Integração: Use Perfex dentro de fluxos interativos
- ✅ Mapeamento de Campos: Configure quais campos sincronizar
- ✅ Isolamento completo de dados por empresa (tenant)
- ✅ Sistema de quotas personalizáveis (usuários, contatos, campanhas, conexões)
- ✅ Gerenciamento centralizado via Super Admin
- ✅ White Label: Logo, favicon, cores e títulos personalizáveis
- ✅ Planos e limites configuráveis por tenant
- ✅ Associação many-to-many usuário-tenant
- ✅ Mensagens amigáveis para upgrade de plano
- ✅ Backup automático agendado (cron configurável)
- ✅ Backup manual sob demanda
- ✅ Restauração completa do banco de dados
- ✅ Histórico de backups com metadados
- ✅ Armazenamento seguro em volumes Docker
- ✅ Gerenciamento via interface web
- ✅ CRUD completo de contatos
- ✅ Importação em massa via CSV
- ✅ Importação do Chatwoot: Sincronização de contatos do Chatwoot
- ✅ Importação do Perfex CRM: Sincronização de leads do Perfex (NOVO v0.0.4)
- ✅ Sistema de categorização com tags
- ✅ Validação de números telefônicos (formato E.164)
- ✅ Busca avançada e filtros inteligentes
- ✅ Paginação otimizada
- ✅ Isolamento por tenant
- ✅ Edição em massa de contatos
- ✅ WAHA API: Suporte completo com QR Code
- ✅ Evolution API: Integração nativa com Evolution
- ✅ QuePasa: Integração com API QuePasa
- ✅ Configuração por Tenant: Escolha quais provedores habilitar (NOVO v0.0.4)
- ✅ Múltiplas sessões simultâneas por tenant
- ✅ QR Code automático com expiração
- ✅ Status em tempo real das conexões
- ✅ Gerenciamento simplificado de sessões
- ✅ Reconnect automático em falhas
- ✅ Seleção de provedor ao criar sessão
- ✅ Webhooks para campanhas interativas (NOVO v0.0.4)
- ✅ Tipos de Mensagem: Texto, Imagem, Vídeo, Áudio, Documentos
- ✅ Sequências Complexas: Múltiplas mensagens em ordem
- ✅ Randomização: Textos, imagens, vídeos e arquivos aleatórios
- ✅ IA Generativa: OpenAI e Groq para personalização automática
- ✅ Variáveis Dinâmicas:
{{nome}},{{telefone}},{{email}},{{categoria}},{{observacoes}} - ✅ Multi-Sessão: Distribuição automática entre conexões
- ✅ Agendamento: Execução imediata ou programada
- ✅ Controles: Pausar, retomar, cancelar campanhas
- ✅ Rate Limiting: Delays configuráveis para evitar bloqueios
- ✅ Preview em Tempo Real: Visualização da mensagem antes do envio
- ✅ Textos Aleatórios: Pool de mensagens para variar conteúdo
- ✅ Imagens Aleatórias: Múltiplas imagens no pool
- ✅ Vídeos Aleatórios: Seleção aleatória de vídeos
- ✅ Arquivos Aleatórios: Documentos variados por envio
- ✅ Legendas Variadas: Textos diferentes para cada mídia
- ✅ Humanização: Evita detecção de envios automatizados
- ✅ Dashboard em tempo real
- ✅ Estatísticas detalhadas (enviadas, falharam, pendentes)
- ✅ Distribuição por sessão WhatsApp
- ✅ Análise de erros categorizada
- ✅ Exportação completa em CSV
- ✅ Timeline de execução
- ✅ Métricas por tenant
- ✅ SUPERADMIN: Gerencia todos os tenants
- ✅ ADMIN: Gerencia seu tenant
- ✅ USER: Acesso limitado às funcionalidades
- ✅ Autenticação JWT segura
- ✅ Controle de acesso por tenant
- ✅ Hash bcrypt para senhas
- ✅ Associação many-to-many com tenants
- ✅ Configurações globais (Super Admin)
- ✅ Configurações por tenant
- ✅ Integração WAHA configurável
- ✅ Integração Evolution API configurável
- ✅ Personalização visual (logo, favicon, cores, títulos)
- ✅ Chaves de API para IA (OpenAI/Groq) por tenant
- ✅ Gerenciamento de quotas por tenant
- ✅ Sistema de alertas e notificações
- ✅ Alertas de quota (85% e 100% de uso)
- ✅ Monitoramento de saúde do sistema
- ✅ Notificações de falhas de conexão
- ✅ Dashboard de alertas ativos
- ✅ Auto-resolução de alertas antigos
- React 18 - Framework JavaScript moderno
- TypeScript - Tipagem estática para JavaScript
- Vite - Build tool ultra-rápida
- Tailwind CSS - Framework CSS utilitário
- React Hook Form + Zod - Validação de formulários
- React Hot Toast - Notificações elegantes
- React Router Dom - Roteamento SPA
- Node.js 20 - Runtime JavaScript
- Express - Framework web minimalista
- TypeScript - Tipagem estática
- Prisma ORM - Object-Relational Mapping
- bcryptjs - Hash de senhas
- jsonwebtoken - Autenticação JWT
- express-validator - Validação de dados
- libphonenumber-js - Normalização de telefones
- node-cron - Agendamento de tarefas
- socket.io - WebSocket para real-time
- PostgreSQL 16 - Banco de dados relacional
- Redis 7 - Cache e filas
- Prisma - ORM com type-safety
- Docker & Docker Swarm - Containerização e orquestração
- Traefik v2 - Proxy reverso e SSL automático
- Nginx - Servidor web para frontend
- Docker Hub - Imagens oficiais pré-construídas
- WAHA API - WhatsApp Web API
- Evolution API - API alternativa para WhatsApp
- QuePasa - API WhatsApp multi-dispositivo
- Chatwoot - Importação de contatos e criação de tickets
- Perfex CRM - Sincronização de leads e gestão de CRM (NOVO v0.0.4)
- OpenAI API - GPT para geração de conteúdo e processamento de respostas
- Groq API - IA ultra-rápida para fluxos interativos
- ReactFlow - Editor visual de fluxos (NOVO v0.0.4)
- Docker 20.10+
- Docker Compose/Swarm
- Traefik configurado (para produção)
- Instância WAHA ou Evolution API rodando
- Clone o repositório
git clone https://github.com/AstraOnlineWeb/astracampaign.git cd astracampaign- Configure as variáveis de ambiente
# Edite o docker-stack.yml com suas configurações nano docker-stack.ymlPrincipais variáveis:
environment: - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/contacts - JWT_SECRET=sua-chave-secreta-muito-segura - DEFAULT_WAHA_HOST=https://seu-waha.com - DEFAULT_WAHA_API_KEY=sua-waha-api-key - DEFAULT_EVOLUTION_HOST=https://seu-evolution.com - DEFAULT_EVOLUTION_API_KEY=sua-evolution-api-key - DEFAULT_QUEPASA_HOST=https://seu-quepasa.com - DEFAULT_QUEPASA_TOKEN=seu-quepasa-token - DEFAULT_CHATWOOT_URL=https://seu-chatwoot.com - DEFAULT_CHATWOOT_TOKEN=seu-chatwoot-token - DEFAULT_COMPANY_NAME=Sua Empresa - DEFAULT_PAGE_TITLE=Seu Sistema- Deploy no Docker Swarm
# Produção docker stack deploy -c docker-stack.yml work # Desenvolvimento local docker-compose up -d- Verificar serviços
docker service ls docker service logs -f work_backend- Backend
cd backend npm install npm run migrate:prod # Rodar migrações e seed npm run dev # Servidor de desenvolvimento- Frontend
cd frontend npm install npm run dev # Servidor de desenvolvimento (porta 3000)- Acesse o sistema:
http://localhostou seu domínio - Login padrão SUPERADMIN:
superadmin@astraonline.com.br/Admin123 - Login padrão ADMIN:
admin@astraonline.com.br/Admin123 - Configure provedores: Vá em Configurações e adicione WAHA/Evolution/QuePasa
- Configure Chatwoot (opcional): Adicione URL e token do Chatwoot em Configurações
- Crie empresas: Como SUPERADMIN, crie novos tenants
- Crie uma sessão WhatsApp: Na página de Conexões (escolha o provedor)
- Importe contatos: Via CSV, Chatwoot ou manualmente
- Crie sua primeira campanha: Na página de Campanhas
POST /api/auth/login- Login do usuárioPOST /api/auth/logout- Logout do usuário
GET /api/tenants- Listar todos os tenantsPOST /api/tenants- Criar novo tenantPUT /api/tenants/:id- Atualizar tenantDELETE /api/tenants/:id- Excluir tenantGET /api/tenants/:id- Detalhes do tenant
GET /api/contatos- Listar contatos (com paginação/busca)POST /api/contatos- Criar contatoPUT /api/contatos/:id- Atualizar contatoDELETE /api/contatos/:id- Excluir contatoPOST /api/contatos/import- Importar CSVPOST /api/chatwoot/sync-contacts- Importar contatos do ChatwootPOST /api/perfex/import- Importar leads do Perfex CRM (NOVO v0.0.4)POST /api/perfex/sync- Sincronizar contatos com Perfex (NOVO v0.0.4)PATCH /api/contatos/bulk-edit- Edição em massa de contatos
GET /api/campaigns- Listar campanhasPOST /api/campaigns- Criar campanhaPATCH /api/campaigns/:id/toggle- Pausar/RetomarDELETE /api/campaigns/:id- Excluir campanhaGET /api/campaigns/:id/report- Relatório detalhado
GET /api/interactive-campaigns- Listar campanhas interativasPOST /api/interactive-campaigns- Criar campanha interativaGET /api/interactive-campaigns/:id- Detalhes da campanhaPUT /api/interactive-campaigns/:id- Atualizar campanhaDELETE /api/interactive-campaigns/:id- Excluir campanhaPOST /api/interactive-campaigns/:id/publish- Publicar campanhaPOST /api/interactive-campaigns/:id/simulate- Simular fluxo
GET /api/connections- Listar conexõesPOST /api/connections- Criar conexãoGET /api/connections/:id- Detalhes da conexãoPUT /api/connections/:id- Atualizar conexãoDELETE /api/connections/:id- Excluir conexão
POST /api/webhooks/wa/:connectionId/callback- Receber mensagens (HMAC validado)
GET /api/waha/sessions- Listar sessõesPOST /api/waha/sessions- Criar sessão (WAHA, Evolution ou QuePasa)DELETE /api/waha/sessions/:name- Remover sessãoPOST /api/waha/sessions/:name/restart- Reiniciar
GET /api/backup/stats- Estatísticas de backupPOST /api/backup- Criar backup manualPOST /api/backup/restore/:filename- Restaurar backupGET /api/backup/list- Listar backups disponíveis
GET /api/analytics/overview- Visão geral do sistemaGET /api/analytics/campaigns- Métricas de campanhasGET /api/analytics/sessions- Métricas de sessões
// Tenant (Empresa) interface Tenant { id: string; slug: string; name: string; active: boolean; quotas: TenantQuota; settings: TenantSettings; } // Quotas do Tenant interface TenantQuota { maxUsers: number; maxContacts: number; maxCampaigns: number; maxConnections: number; } // Contato interface Contact { id: string; tenantId: string; nome: string; telefone: string; // E.164 format email?: string; categoriaId?: string; observacoes?: string; } // Campanha interface Campaign { id: string; tenantId: string; nome: string; targetCategories: string[]; sessionNames: string[]; messageType: 'text' | 'image' | 'video' | 'audio' | 'document' | 'sequence'; messageContent: MessageContent; randomize: boolean; // Randomizar conteúdo randomDelay: number; status: 'PENDING' | 'RUNNING' | 'COMPLETED' | 'PAUSED' | 'FAILED'; } // Sessão WhatsApp interface WhatsAppSession { id: string; tenantId: string; name: string; displayName?: string; status: string; provider: 'WAHA' | 'EVOLUTION' | 'QUEPASA'; qr?: string; quepasaToken?: string; // Token para QuePasa }# Backend (.env) DATABASE_URL=postgresql://user:pass@host:5432/db REDIS_URL=redis://redis:6379 JWT_SECRET=sua-chave-secreta-muito-segura JWT_EXPIRES_IN=24h # Provedores WhatsApp DEFAULT_WAHA_HOST=http://waha:3000 DEFAULT_WAHA_API_KEY=sua-waha-api-key DEFAULT_EVOLUTION_HOST=http://evolution:8080 DEFAULT_EVOLUTION_API_KEY=sua-evolution-api-key DEFAULT_QUEPASA_HOST=http://quepasa:31000 DEFAULT_QUEPASA_TOKEN=seu-quepasa-token # Integração Chatwoot DEFAULT_CHATWOOT_URL=https://seu-chatwoot.com DEFAULT_CHATWOOT_TOKEN=seu-chatwoot-token # Configurações Gerais DEFAULT_COMPANY_NAME=Astra Campaign DEFAULT_PAGE_TITLE=Sistema de Gestão de Contatos# Traefik Labels para Produção labels: - traefik.enable=true - traefik.http.routers.app.rule=Host(`seu-dominio.com`) - traefik.http.routers.app.tls=true - traefik.http.routers.app.tls.certresolver=letsencryptnome,telefone,email,categoria,observacoes João Silva,+5511999999999,joao@email.com,Cliente VIP,Cliente preferencial Maria Santos,+5511888888888,maria@email.com,Prospect,Interessada em produto XPara importar contatos do Chatwoot:
-
Configure o Chatwoot nas configurações do tenant:
- URL do Chatwoot:
https://seu-chatwoot.com - Token de API: Obtenha em Perfil → Tokens de Acesso
- URL do Chatwoot:
-
Importe os contatos:
- Acesse a página de Contatos
- Clique em "Importar do Chatwoot"
- Selecione a categoria desejada
- Os contatos serão sincronizados automaticamente
-
Dados importados:
- Nome do contato
- Número de telefone
- Categoria (configurável)
Para usar o QuePasa como provedor WhatsApp:
-
Configure o QuePasa nas configurações:
- Host:
https://seu-quepasa.comouhttp://ip:31000 - Token: Token de autenticação do QuePasa
- Host:
-
Crie uma sessão:
- Na página de Conexões WhatsApp
- Selecione "QuePasa" como provedor
- O token será gerado automaticamente
- Escaneie o QR Code com o WhatsApp
-
Recursos suportados:
- Envio de mensagens de texto
- Envio de imagens com legenda
- Envio de vídeos com legenda
- Envio de documentos
- Status da conexão em tempo real
Para usar randomização de mensagens, configure múltiplos conteúdos:
{ "texts": [ "Olá {{nome}}! Tudo bem?", "Oi {{nome}}, como vai?", "E aí {{nome}}?" ], "images": [ "/uploads/image1.jpg", "/uploads/image2.jpg", "/uploads/image3.jpg" ], "captions": [ "Confira essa promoção!", "Veja essa novidade!", "Aproveite essa oportunidade!" ] }# Backend cd backend docker build --no-cache -t work-backend:latest . # Frontend cd frontend npm run build docker build -t work-frontend:latest . # Push para registry (opcional) docker tag work-backend:latest seu-registry/work-backend:latest docker push seu-registry/work-backend:latest# Status dos serviços docker service ls # Logs em tempo real docker service logs -f work_backend docker service logs -f work_frontend # Restart de serviços docker service update --force work_backend # Verificar health curl http://localhost:3001/api/healthConfigure o cron de backup no painel de Super Admin:
- Diário:
0 2 * * *(02:00 AM) - Semanal:
0 2 * * 0(Domingo 02:00 AM) - Mensal:
0 2 1 * *(Dia 1 de cada mês 02:00 AM)
Contribuições são muito bem-vindas! Este é um projeto open-source mantido pela comunidade.
- Fork o repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
- Use o sistema de Issues
- Descreva o problema detalhadamente
- Inclua logs relevantes
- Especifique ambiente (OS, Docker version, etc.)
- Abra uma Issue com o label
enhancement - Descreva a funcionalidade desejada
- Explique o caso de uso
Este projeto está licenciado sob a GNU Affero General Public License v3.0 (AGPLv3) - veja o arquivo LICENSE para detalhes.
- ✅ Uso comercial permitido
- ✅ Modificação permitida
- ✅ Distribuição permitida
- ✅ Uso privado permitido
- ✅ Uso em rede/web permitido
⚠️ Copyleft forte: Modificações devem ser disponibilizadas sob a mesma licença⚠️ Divulgação de código: Serviços web baseados no projeto devem disponibilizar o código fonte- ❌ Sem garantias
- ❌ Sem responsabilidade dos autores
Importante: A licença AGPLv3 requer que qualquer versão modificada do software, incluindo aquelas usadas para fornecer serviços através de uma rede, tenha seu código fonte disponibilizado publicamente.
IMPORTANTE: Este projeto é independente e não possui ligação alguma com o WhatsApp oficial, Meta ou Facebook. Use por sua própria conta e risco, respeitando os termos de serviço do WhatsApp.
- ✅ Respeite os limites do WhatsApp
- ✅ Use delays apropriados entre mensagens (recomendado: 5-10 segundos)
- ✅ Use randomização para humanizar os envios
- ✅ Não envie spam
- ✅ Obtenha consentimento dos destinatários
- ✅ Mantenha o sistema atualizado
- ✅ Faça backups regulares
- WAHA - API WhatsApp Web
- Evolution API - API alternativa para WhatsApp
- QuePasa - API WhatsApp multi-dispositivo
- Chatwoot - Plataforma de atendimento ao cliente
- Prisma - ORM TypeScript
- Tailwind CSS - Framework CSS
- React - Biblioteca JavaScript
- Comunidade Open Source - Por tornar projetos como este possíveis
- 💬 Grupo WhatsApp - Comunidade aberta para discussões
- 💬 Discussions - Discussões técnicas no GitHub
- 🐛 Issues - Bugs e features
Precisa de ajuda para melhorar, customizar ou implementar o projeto?
📱 WhatsApp: +55 61 9 9687-8959
💼 Temos uma equipe especializada para:
- ✅ Customizações e melhorias
- ✅ Implementação e deploy completo
- ✅ Configuração de arquitetura SaaS
- ✅ Integração com outras APIs
- ✅ Desenvolvimento de features específicas
- ✅ Suporte técnico dedicado
- ✅ Consultoria em automação WhatsApp
- ✅ Treinamento e documentação
- 📖 Guia de Campanhas Interativas - Documentação completa da v0.0.4
- 📖 API de Campanhas Interativas - Endpoints e exemplos
- 📖 Testes de Campanhas Interativas - Checklist de validação
- 📖 Documentação WAHA
- 📖 Documentação Evolution API
- 📖 Documentação QuePasa
- 📖 Documentação Chatwoot API
- 📖 Documentação Perfex CRM API - Integração v0.0.4
- 📖 Documentação ReactFlow - Flow Builder v0.0.4
- 📖 Documentação Prisma
- 📖 Documentação React
- 📖 Documentação Docker Swarm