AstraCampaing instalação

Link: https://github.com/AstraOnlineWeb/astracampaign
git clone https://github.com/AstraOnlineWeb/astracampaign.git

Astra Campaign v0.0.4 - Plataforma SaaS Multi-Tenant para Campanhas WhatsApp

Logo React Node.js TypeScript PostgreSQL Docker

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


✨ Novidades da Versão 0.0.4

🎨 Campanhas Interativas com Flow Builder Visual (DESTAQUE!)

💼 Integração Perfex CRM

🎛️ Controle de Provedores por Tenant

🔐 Sistema de Webhooks Seguro

📈 Melhorias Gerais

📖 Ver Changelog Completo | Guia de Campanhas Interativas


📋 Sobre o Projeto

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.

✨ Principais Diferenciais


🎯 Recursos Principais

🎨 Campanhas Interativas com Flow Builder (NOVO v0.0.4)

💼 Integração Perfex CRM (NOVO v0.0.4)

🏢 Arquitetura Multi-Tenant (SaaS)

💾 Backup & Restore

👥 Gerenciamento de Contatos

📱 Conexões WhatsApp (Múltiplos Provedores)

🎯 Campanhas Inteligentes

🎲 Sistema de Randomização

📊 Relatórios e Analytics

👤 Sistema de Usuários e Roles

⚙️ Configurações do Sistema

🔔 Sistema de Alertas e Monitoramento


🛠️ Tecnologias Utilizadas

🎨 Frontend

⚡ Backend

🗄️ Banco de Dados

🐳 Infraestrutura

🔌 Integrações


🚀 Instalação

📋 Pré-requisitos

🐳 Instalação via Docker (Recomendado)

  1. Clone o repositório
git clone https://github.com/AstraOnlineWeb/astracampaign.git
cd astracampaign

  1. Configure as variáveis de ambiente
# Edite o docker-stack.yml com suas configurações
nano docker-stack.yml

Principais 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

  1. Deploy no Docker Swarm
# Produção
docker stack deploy -c docker-stack.yml work

# Desenvolvimento local
docker-compose up -d

  1. Verificar serviços
docker service ls
docker service logs -f work_backend

🛠️ Desenvolvimento Local

  1. Backend
cd backend
npm install
npm run migrate:prod  # Rodar migrações e seed
npm run dev          # Servidor de desenvolvimento

  1. Frontend
cd frontend
npm install
npm run dev          # Servidor de desenvolvimento (porta 3000)

⚙️ Configuração Inicial

  1. Acesse o sistema: http://localhost ou seu domínio
  2. Login padrão SUPERADMIN: superadmin@astraonline.com.br / Admin123
  3. Login padrão ADMIN: admin@astraonline.com.br / Admin123
  4. Configure provedores: Vá em Configurações e adicione WAHA/Evolution/QuePasa
  5. Configure Chatwoot (opcional): Adicione URL e token do Chatwoot em Configurações
  6. Crie empresas: Como SUPERADMIN, crie novos tenants
  7. Crie uma sessão WhatsApp: Na página de Conexões (escolha o provedor)
  8. Importe contatos: Via CSV, Chatwoot ou manualmente
  9. Crie sua primeira campanha: Na página de Campanhas

📚 Documentação

🔗 Endpoints da API

Autenticação

Tenants (SUPERADMIN)

Contatos

Campanhas

Campanhas Interativas (NOVO v0.0.4)

Conexões para Campanhas Interativas (NOVO v0.0.4)

Webhooks (NOVO v0.0.4)

Sessões WhatsApp

Backup & Restore

Analytics

📊 Modelo de Dados

// 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
}

🔧 Configuração Avançada

🔐 Variáveis de Ambiente

# 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

🐳 Docker Swarm Labels

# 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=letsencrypt

📝 Formato CSV para Importação

nome,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 X

💬 Integração com Chatwoot

Para importar contatos do Chatwoot:

  1. Configure o Chatwoot nas configurações do tenant:

    • URL do Chatwoot: https://seu-chatwoot.com
    • Token de API: Obtenha em Perfil → Tokens de Acesso
  2. Importe os contatos:

    • Acesse a página de Contatos
    • Clique em "Importar do Chatwoot"
    • Selecione a categoria desejada
    • Os contatos serão sincronizados automaticamente
  3. Dados importados:

    • Nome do contato
    • Número de telefone
    • Email
    • Categoria (configurável)

🔌 Configuração do QuePasa

Para usar o QuePasa como provedor WhatsApp:

  1. Configure o QuePasa nas configurações:

    • Host: https://seu-quepasa.com ou http://ip:31000
    • Token: Token de autenticação do QuePasa
  2. 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
  3. 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

🎲 Randomização de Conteúdo

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!"
  ]
}


🚀 Deploy em Produção

🔧 Build das Imagens

# 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

📊 Monitoramento

# 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/health

💾 Backup Automatizado

Configure o cron de backup no painel de Super Admin:


🤝 Contribuindo

Contribuições são muito bem-vindas! Este é um projeto open-source mantido pela comunidade.

🛠️ Como Contribuir

  1. Fork o repositório
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -m 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

📝 Reportar Bugs

💡 Sugerir Features


📄 Licença

Este projeto está licenciado sob a GNU Affero General Public License v3.0 (AGPLv3) - veja o arquivo LICENSE para detalhes.

⚖️ Termos de Uso

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.


⚠️ Disclaimer

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.

🔒 Recomendações de Uso


🙏 Agradecimentos


📞 Suporte

💬 Comunidade

🛠️ Suporte Profissional

Precisa de ajuda para melhorar, customizar ou implementar o projeto?

📱 WhatsApp: +55 61 9 9687-8959

💼 Temos uma equipe especializada para:

📚 Recursos Úteis


Revision #3
Created 2026-11-08 14:13:17 UTC by Administrador
Updated 2026-11-08 20:17:33 UTC by Administrador