Synaplan
기업을 위한 오픈소스 AI 플랫폼
기업을 찾고, 누락 데이터 확인, IA로 WhatsApp 응대. 여러 칩·리드와 연동된 스마트 대기열
Encontre empresas, descubra os dados que faltam e atenda no WhatsApp com IA. Fila inteligente entre vários chips e leads já cruzados.
비즈니스JavaScript · TypeScriptGitHub @freelandoo온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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 |