Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Plataforma de atendimento e vendas por WhatsApp com agente de IA, mais o CRM comercial em volta dele: aquisição de leads, banco de leads, conversas, follow-ups, central de ligações, agenda, comissão e equipes — tudo multiempresa. O agente recebe mensagens pela Evolution API, mantém conversa e perfil no PostgreSQL, decide a próxima ação por um pipeline determinístico e usa Anthropic ou OpenAI para redigir a resposta. O frontend fala com o backend por HTTP direto (NEXT_PUBLIC_API_URL), com JWT no header. Não há BFF nem proxy.查看完整 README ↗
Plataforma de atendimento e vendas por WhatsApp com agente de IA, mais o CRM comercial em volta dele: aquisição de leads, banco de leads, conversas, follow-ups, central de ligações, agenda, comissão e equipes — tudo multiempresa.
O agente recebe mensagens pela Evolution API, mantém conversa e perfil no PostgreSQL, decide a próxima ação por um pipeline determinístico e usa Anthropic ou OpenAI para redigir a resposta.
| O que é | Stack | Deploy | |
|---|---|---|---|
backend/ | API, regra de negócio, agente de IA, workers, integrações, banco | Node 20 + Express 5 + PostgreSQL (pg) | Railway, Root Directory backend/ |
frontend/ | Interface do produto (operação comercial) | Next.js 14 (App Router) + React 18 + Tailwind | Vercel, Root Directory frontend |
O frontend fala com o backend por HTTP direto (NEXT_PUBLIC_API_URL), com JWT no header.
Não há BFF nem proxy.
⚠️ O backend serve duas gerações de produto ao mesmo tempo. Além da API multiempresa (
/api/empresas/:empresaId/*) que ofrontend/consome, ele ainda serve um dashboard estático legado — removido em 2026-09-24 — sobre rotas/dashboard/*, com outra autenticação. As 98 rotas continuam montadas; só a interface saiu. Ele está vivo e em uso, mas cercado: não pode crescer. Código novo nasce sempre na geração multiempresa. Verdocs/project-map.md.
1. Infraestrutura (Postgres + Redis + Evolution API):
docker compose up -d postgres redis evolution-api
O compose também define um serviço webhook, que sobe o backend dentro do Docker. Para
desenvolver, prefira subir só a infraestrutura acima e rodar o backend no host (passo 2) —
assim você edita e reinicia sem rebuild de imagem.
O docker-compose.override.yml publica o Postgres em 5433 no host (a 5432 costuma estar
ocupada pelo Postgres nativo).
2. Backend — crie backend/.env a partir de backend/.env.example:
cd backend
npm install
npm start # porta 3000
Obrigatórias no boot (sem elas o processo aborta, por validarSecretsBoot em index.js):
| Variável | Para quê |
|---|---|
ANTHROPIC_KEY/ANTHROPIC_API_KEY ou OPENAI_KEY/OPENAI_API_KEY | ao menos um provedor de IA |
EVOLUTION_API_KEY | integração com o WhatsApp |
REPROCESS_SECRET | mín. 8 caracteres — protege /dashboard/* e /webhook |
DASHBOARD_ADMIN_EMAIL e DASHBOARD_ADMIN_PASSWORD | primeiro admin (senha mín. 12) |
JWT_SECRET | obrigatória em produção — assina o login do SaaS |
⚠️ O boot aplica TODAS as migrations de backend/sql/migrations/ no banco apontado por
DATABASE_URL, em ordem numérica e cada uma em sua transação. Confira para onde
seu .env aponta antes de rodar npm start.
3. Frontend:
cd frontend
npm install
npm run dev -- -p 3001 # SEMPRE 3001
⚠️ Rode um next dev por vez: duas instâncias compartilhando .next corrompem o build e a
tela passa a "não fazer nada". Aponte NEXT_PUBLIC_API_URL=http://localhost:3000 no
frontend/.env.local.
Não existe build nem lint no backend, e o frontend não tem ESLint configurado
(npm run lint abre prompt interativo e trava). O portão real é:
# backend/
npm run typecheck # tsc --noEmit
npm test # ~2.955 testes — deve sair com exit 0, sem falha tolerada
npm run smoke:preco # smoke de precificação (não toca o banco)
# frontend/
npx tsc --noEmit
npm test # node --test lib/*.test.js
npm run build
⚠️ Nunca rode node --test sem argumento no backend: o padrão de descoberta do Node captura
scripts/*.test.js fosse descoberto por engano. O script que envia mensagem real de WhatsApp
foi renomeado para scripts/enviar-teste-evolution.js, fora do padrao test-*. O npm test usa o
glob test/*.test.js justamente para não alcançá-lo.
Além dos testes de regra, a suíte tem guardas estruturais que quebram o build de propósito: o contrato das 427 rotas montadas, a cerca da geração legada, a integridade das migrations e a autorização por capacidade rota a rota.
Tudo isso roda automaticamente em todo push e pull request
(.github/workflows/ci.yml) — sem nenhum segredo configurado, porque a suíte é hermética. Há
ainda um job que carrega a aplicação no Node 20, o runtime do Docker, para incompatibilidade
com produção aparecer no CI e não na subida do container.
| Documento | Para quê |
|---|---|
AGENTS.md | fonte viva. Decisões, defeitos corrigidos e o porquê de cada regra. Quando algo divergir, ele vence |
CLAUDE.md | como agentes de IA devem trabalhar neste repositório |
docs/project-map.md | mapa de pastas e responsabilidades, com números medidos |
docs/architecture-rules.md | a lei técnica (o que pode e o que não pode) |
docs/GUIA-VISUAL-PJ-CODEWORKS.md | padrão visual — obrigatório em qualquer tarefa de tela |
ARCHITECTURE_AUDIT.md | auditoria arquitetural de 2026-09-21 |
LEGACY_REVIEW.md | o que parece morto e aguarda decisão — não apague nada dali sem revisar |
docs/historico/ | iniciativas encerradas. Não descrevem o sistema atual |