Plataforma de atendimento WhatsApp multi-conexão em Go + React. Chat, filas, contatos, conexões multi-número e relatórios — tudo em um único binário.
💚 Projeto open source. Código-fonte completo, sem telemetria, sem dependência de serviços externos pagos. Rode em sua própria VPS.
Esta build entrega apenas as funcionalidades ativas no menu:
| Módulo | Rota | Descrição |
|---|---|---|
| 🔐 Login | /login |
Autenticação por e-mail e senha. Admin padrão: wacalls@admin.com / admin. |
| 💬 Chat | /chats |
Conversas em tempo real, envio de mídia, encerramento de atendimento (sem exigir motivo). |
| 👥 Contatos | /contacts |
Lista, busca e edição de contatos sincronizados do WhatsApp. |
| 🗂️ Filas | /queues |
Distribuição de atendimentos por fila/setor. |
| 📱 Conexões | /connections |
Pareamento multi-número via QR Code, status e desconexão. |
| 📊 Relatórios | /reports |
Mensagens enviadas/recebidas, chamadas, tickets, tendência diária. |
| 🛡️ Usuários | /admin/users |
CRUD de usuários e perfis (apenas admin). |
Para manter o deploy enxuto, foram removidos do menu (podem ser removidos também do httpapi.go se quiser build ainda menor):
- ❌ Construtor de fluxo (Flowbuilder)
- ❌ Kanban / Pipeline
- ❌ Campanhas / Broadcast em massa
- ❌ Agentes de IA
- ❌ Chamadas VoIP nativas (whatsmeow VoIP)
- ❌ TTS / gravação de chamadas
- ❌ Billing / Financeiro
- ❌ Cadastro público de novos usuários (só admin cria)
- ❌ Avaliação do atendimento pelo cliente
- ⚙️ Backend: Go 1.26+, SQLite embarcado (pure-Go, sem CGO), Redis opcional
- 🎨 Frontend: React 19 + Vite 7 + Tailwind + shadcn/ui
- 📲 WhatsApp: whatsmeow (multi-device)
- 🚀 Deploy: Binário único servindo API + frontend estático na mesma porta
Requisitos: Go 1.26+, Node.js 20+, npm, unzip, systemd (opcional).
📦 Repositório oficial: https://github.com/raphaelbat/wacalls-chat
Copie e cole este único comando na sua VPS. Ele baixa o instalador e abre o menu interativo com as opções 1) GIT · 2) ZIP · 3) Sair:
bash <(curl -fsSL https://raw.githubusercontent.com/raphaelbat/wacalls-chat/main/client/scripts/instalador_wacalls.sh)Você verá:
============================================================
WaCalls — Instalador / Atualizador
============================================================
1) Instalar / Atualizar via GIT (padrão — recomendado)
2) Instalar / Atualizar via ZIP (arquivo local)
3) Sair
============================================================
Escolha uma opção [1-3] (padrão 1):
Prefere pular o menu e ir direto? Use os atalhos:
# Direto via GIT (repo/branch padrão)
bash <(curl -fsSL https://raw.githubusercontent.com/raphaelbat/wacalls-chat/main/client/scripts/instalador_wacalls.sh) git
# Direto via GIT com fork/branch específico
bash <(curl -fsSL https://raw.githubusercontent.com/raphaelbat/wacalls-chat/main/client/scripts/instalador_wacalls.sh) \
git https://github.com/SEU_USUARIO/wacalls-chat.git main
# Direto via ZIP local
bash <(curl -fsSL https://raw.githubusercontent.com/raphaelbat/wacalls-chat/main/client/scripts/instalador_wacalls.sh) \
zip /root/wacalls.zipSe preferir enviar o pacote manualmente:
# copie wacalls.zip para /root da VPS, então:
unzip -j /root/wacalls.zip 'wacalls/client/scripts/instalador_wacalls.sh' -d /root/
chmod +x /root/instalador_wacalls.sh
/root/instalador_wacalls.sh /root/wacalls.zipunzip wacalls.zip -d /opt/
cd /opt/wacalls
# Backend
go build -o wacalls ./cmd/server
# Frontend
cd client
npm install
npm run build # gera client/dist (servido pelo binário)
cd ..
# Rodar
./wacalls -addr :8080 -db /var/lib/wacalls/wacalls.dbNa primeira execução o admin padrão wacalls@admin.com / admin é criado.
Para trocar:
./wacalls -seed-admin-email meu@email.com -seed-admin-password minhaSenha# Banco (padrão SQLite; NÃO use mariadb — whatsmeow não suporta)
DB_DRIVER=sqlite
# Redis opcional — só necessário para múltiplas instâncias / cache compartilhado
REDIS_URL=redis://:senha@127.0.0.1:6379/0| Componente | SQLite (padrão) | SQLite + Redis |
|---|---|---|
| Empresas ativas | 30–80 | 150–220 |
| Sessões WhatsApp simultâneas | 50–150 | 300–500 |
| SSE fan-out | processo único | multi-instância |
[Unit]
Description=WaCalls
After=network.target
[Service]
WorkingDirectory=/opt/wacalls
EnvironmentFile=/opt/wacalls/.env
ExecStart=/opt/wacalls/wacalls -addr :8080 -db /var/lib/wacalls/wacalls.db
Restart=always
User=root
[Install]
WantedBy=multi-user.targetsystemctl enable --now wacalls
journalctl -u wacalls -fPOST /api/auth/login·GET /api/auth/me·POST /api/auth/logoutGET/POST/PUT/DELETE /api/users(admin)GET/POST /api/sessions/*— conexões WhatsApp (QR, status)GET /api/sessions/{id}/chats/*— chats e mensagensGET /api/contacts— contatosGET/POST /api/queues— filas de atendimentoGET /api/reports/summary— métricas do relatórioGET /api/events(SSE) — eventos em tempo real
ℹ️ Rotas dos módulos não usados (flows, kanban, campanhas, VoIP) continuam no código mas não são expostas pelo menu. Você pode removê-las editando
cmd/server/httpapi.go.
wacalls/
├── cmd/server/ # backend Go (HTTP + SSE + whatsmeow)
├── internal/ # domínio: wa, voip (legacy), auth
├── client/ # frontend React + Vite
│ ├── src/pages/ # Login, Chats, Connections, Contacts, Queues, Reports, AdminUsers
│ └── scripts/ # instalador_wacalls.sh
├── dist/ # build de frontend embutido (fallback)
├── go.mod / go.sum
├── README.md # este arquivo
└── SETUP.md # guia curto de deploy
Rode o mesmo instalador com um novo wacalls.zip. Ele faz backup automático de wacalls.db, .env, data/ e media/ em /root/wacalls-backup-<timestamp>.
This project builds on the work of:
Feito com muito 💚 e código aberto por:
- 👨💻 JotaDev66 — mantenedor da lib base (WaCalls core)
- 👨💻 jobasfernandes — contribuidor
- 🚀 Raphaelbat — desenvolvimento dos demais recursos do sistema (painel, chats, conexões, usuários, instalador e integrações)
📺 Canal Vem Fazer
🔥 Se esse projeto te ajudou, dê uma força ao canal! 🔥
Curta, comente e compartilhe os vídeos — é isso que mantém o projeto vivo e gratuito!
Feito com 💚 pela comunidade open source.




