SaaSBeta2025

Trativa

SaaS CRM multi-tenant com pipeline kanban, WhatsApp Cloud API e app desktop Electron

React 18ViteTailwind CSSSocket.IONode.jsExpress
Roda emWebPWA (celular)Desktop (Electron · Windows)
trativa.app
etapas no pipeline, do novo ao convertido
9
repositórios: app, API, landing e desktop
4
tipos de campo personalizado por empresa
11
superfícies: web, PWA e desktop Electron
3

01

Visão Geral

O Trativa é um SaaS multi-tenant construído em 4 repositórios separados: front-end React/PWA, back-end Node.js/MongoDB, landing page e app desktop Electron instalável para Windows. O sistema tem multi-tenancy completo por Organization — cada empresa tem seus leads, usuários e campos personalizados isolados. O pipeline tem 9 etapas reais (novo → em atendimento → contatado → interessado → sem resposta → reunião marcada → proposta enviada → convertido → perdido), com drag-and-drop via dnd-kit e updates em tempo real por Socket.IO. Relatórios incluem funil de conversão, desempenho por vendedor, por origem, por cidade, leads parados e série temporal de conversão.

Meu papel

Desenvolvedor full-stack solo — arquitetura de 4 repositórios, back-end Node.js/Express/MongoDB, front-end React/Vite/PWA, integração WhatsApp Cloud API, Stripe multi-plano, app desktop Electron, landing page com Framer Motion.


Categoria

SaaS

Ano

2025

Status

Beta

Plataformas

WebPWA (celular)Desktop (Electron · Windows)

Quatro repositórios, um produto. O app React fala só com a API; a API é a única que sabe de organização, plano e WhatsApp. O Electron não reimplementa nada — carrega o mesmo app, que já é responsivo.

App React 18

Vite · PWA · Railway

Tailwind@dnd-kitSocket.IO clientRecharts

API Express

Node · Railway

JWT + refreshSocket.IOStripeMulti-tenant

Dados e canais

MongoDB + integrações

MongooseWhatsApp Cloud APIResendSentry

App desktop

Electron · Windows

NSIScontextIsolationsandboxSem código sensível

Sincronização: scopeQuery aplica Organization + soft delete em todo endpoint: um lead de uma empresa nunca aparece na consulta de outra, mesmo que o id vaze.


02

O Problema

Equipes comerciais brasileiras perdem oportunidades por falta de rastreamento estruturado — leads chegam de fontes diferentes (Google Maps, Instagram, indicação, anúncios), são anotados no caderno ou WhatsApp e ficam sem acompanhamento. Gestores não têm visibilidade do funil em tempo real.

03 — A Solução

CRM web + PWA + desktop com pipeline de 9 etapas personalizável, integração WhatsApp Cloud API para comunicação direta, campos personalizados com 10+ tipos para adaptar à realidade de cada empresa, metas de vendas por vendedor e relatórios completos de funil — com assinatura Stripe em 4 planos e trial de 14 dias.


04

Por dentro do produto

O sistema em funcionamento, gravado da aplicação real com uma loja de demonstração — nenhuma tela é mockup.

01

Pipeline

O lead atravessa o funil no arrastar e soltar

Nove etapas reais de comercial, do primeiro contato ao convertido. O card sai de uma coluna e entra na outra com @dnd-kit, o contador de cada etapa se ajusta, o status grava na hora e o Socket.IO empurra a mudança para quem estiver com a mesma tela aberta.

  • Kanban, tabela e cards sobre os mesmos dados e filtros
  • Status também editável pelo seletor do próprio card
  • Cada coluna carrega 25 leads e busca o resto sob demanda
Pipeline
02

WhatsApp

A conversa oficial acontece dentro da ficha do lead

Integração com a WhatsApp Cloud API da Meta: a conversa fica numa aba do lead, com o aviso da janela de 24 horas, o histórico de enviadas e recebidas com status de leitura e a escolha entre mensagem livre (dentro da janela) ou template aprovado (fora dela).

  • Janela de atendimento com validade visível antes de escrever
  • Follow-up agendado a partir da própria conversa
  • Opt-out por lead, respeitado em disparos e contato em lote
WhatsApp
03

Relatórios

O funil aponta onde o processo trava

As etapas viram barras proporcionais com a conversão de uma para a outra. Quando uma passagem fica abaixo de 30%, ela é marcada em vermelho e o sistema diz o que está acontecendo ali — o mesmo recorte pode ser lido por vendedor e por origem.

  • Período configurável, dos últimos 7 dias ao mês fechado
  • Leitura por vendedor e por origem sobre os mesmos números
  • Relatórios de leads parados, por cidade e série de conversão
Relatórios
04

Personalização

Cada empresa cria os campos que usa — sem deploy

Onze tipos de campo (texto, número, moeda, data, sim/não, seleção, múltipla escolha, URL, e-mail, telefone, texto longo). O admin escolhe onde cada um aparece: no card do kanban, como coluna da tabela ou nos filtros de busca — e a mudança vale para a organização inteira na hora.

  • Chave gerada como slug e guardada em Map<Mixed> no Mongoose
  • Campos entram na exportação CSV e na importação
  • Campo desativado some das telas sem apagar o dado gravado
Personalização
05

Entrada de leads

Importar antes de gravar: revisão, duplicatas e API

A planilha sobe, o sistema mostra quantas linhas são válidas, quantas são duplicadas e quantas têm erro — e só grava depois do aceite. A mesma rota existe como API com chave própria, para quem prefere mandar os leads direto da automação.

  • Sessão de importação guardada por 30 minutos entre revisão e confirmação
  • Detecção de duplicatas por telefone, e-mail, Instagram e site
  • Colunas desconhecidas viram campos personalizados na hora
Entrada de leads
06

Equipe

Convite com papel e projeto, meta com progresso real

O convite define papel e a quais projetos a pessoa tem acesso. As metas são medidas contra o histórico do lead — não contra um contador à parte —, então o progresso de cada vendedor reflete exatamente as mudanças de status do período.

  • Papéis: proprietário, admin e colaborador com escopo próprio
  • Quatro tipos de meta: convertidos, contatados, propostas e reuniões
  • Colaborador enxerga apenas os leads sob sua responsabilidade
Equipe
07

Interface

Seis paletas para a interface — a marca segue azul

Cada usuário escolhe a paleta do sistema (azul, roxo, verde, laranja, rosa ou cinza) e ela é aplicada por data-theme na raiz, sobrescrevendo os tokens do Tailwind. A identidade da marca não muda com isso: o azul institucional continua no logo e na comunicação.

  • Preferência guardada por usuário, aplicada antes da primeira pintura
  • No celular a sidebar vira gaveta e o kanban vira abas por etapa
  • Mesmo app roda instalado como PWA e como desktop Electron
Interface

05

8 fluxos em vídeo

Cada vídeo mostra uma tarefa completa, de ponta a ponta. Clique para assistir com controles.


06

Funcionalidades Principais

01

Pipeline Kanban de 9 Etapas

Drag-and-drop via @dnd-kit com 9 status reais de comercial. Visualizações alternáveis: kanban, tabela e cards. Updates em tempo real via Socket.IO para toda a equipe simultaneamente.

02

WhatsApp Cloud API

Integração nativa com WhatsApp Cloud API — envio e recebimento de mensagens diretamente na timeline do lead, sem sair do CRM.

03

Campos Personalizados

10+ tipos de campo (texto, número, moeda, data, boolean, select, multiselect, URL, e-mail, telefone) criados pelo admin e exibíveis no kanban, na tabela ou nos filtros.

04

Relatórios e Funil de Vendas

8+ endpoints de relatório: funil de conversão com gargalos (<30%), desempenho por vendedor, leads por origem, por cidade, leads parados e série temporal de conversão.

05

Metas de Vendas

Metas por vendedor com 4 tipos (convertidos, contatados, propostas, reuniões), período configurável e progresso calculado em tempo real contra o LeadHistory.

06

App Desktop Electron

Versão desktop instalável para Windows (.exe NSIS) via Electron.js — mesma experiência do web app, com notificações nativas e atalhos de teclado. Disponível em trativa.app/download.


07

Telas do sistema

Capturas reais do produto, organizadas por módulo. Clique em qualquer tela para ampliar.

Doze indicadores do funil, do lead novo ao convertido
Leads por status, por origem e por responsável
Mensagens recebidas, conversões, tarefas do dia e leads parados
Kanban de 9 etapas com contagem por coluna
Reunião marcada, proposta enviada, convertido e perdido
Mesmos dados em tabela, com colunas de campos personalizados
Filtros por status, responsável, origem, cidade e campos próprios
Busca por nome, telefone, e-mail ou Instagram
Ficha com dados, campos personalizados e follow-ups pendentes
Conversa da Cloud API com janela de 24h e status de leitura
Fora da janela, o envio passa a ser por template aprovado
Histórico de ações: criação, atribuição e cada mudança de status

08

No celular

O vendedor abre o CRM entre uma visita e outra: no celular a sidebar vira gaveta, o kanban vira abas por etapa e a conversa de WhatsApp continua dentro da ficha. O mesmo app é instalado como PWA.

Início
Menu
Leads
Kanban
Ficha do lead
WhatsApp
Funil
Metas
Notificações
Novo lead
Login

09

Tecnologias

Front-end

React 18ViteTailwind CSSSocket.IO

Back-end

Node.jsExpressMongoDBMongoose

Banco de Dados

MongoDBMongoose

Deploy

Railway

Integrações

StripeWhatsApp Cloud APIResendSocket.IOElectron.jsSentry

Bibliotecas

@dnd-kit/coreRechartsReact Router 6vite-plugin-pwaFramer MotionPapaparse

10

Decisões de Design

Produto dividido em 4 repositórios com responsabilidades claras: backend (API + regras de negócio), frontend (SPA/PWA), landing page (marketing/SEO) e desktop (Electron wrapper). O Electron não reimplementa nada — carrega o web app, que já é responsivo. Campos personalizados são configurados por admin e propagam para kanban, tabela e filtros automaticamente, sem deploy.

11

Desafios Técnicos

Campos personalizados nos filtros e exportação CSV: o campo customFields é um Map<Mixed> no Mongoose, mas chegava como objeto plano do JSON. O frontend precisou lidar com os dois formatos (getCustomValue aceita Map e objeto). No export, Papaparse recebe colunas dinâmicas calculadas a partir dos campos ativos da organização — campos inativos não aparecem mesmo que o lead tenha o valor gravado.


12

Resultados

  • SaaS multi-tenant funcional com 4 planos Stripe (R$49 a R$397) e trial de 14 dias
  • App desktop instalável para Windows via Electron + PWA para mobile — um produto, três superfícies
  • Pipeline com 9 etapas, relatórios de funil, metas por vendedor e WhatsApp integrado em produção

13

Aprendizados

  • Multi-tenancy real em MongoDB: scopeQuery aplica automaticamente Organization + soft delete em todos os endpoints, sem o risco de vazamento de dados entre empresas
  • WhatsApp Cloud API: integração direta com a API oficial da Meta para envio e recebimento de mensagens na timeline do lead
  • Campos personalizados flexíveis: CustomField por organização com key gerada como slug, exibição configurável no kanban/tabela/filtros e armazenamento como Map<Mixed> no Mongoose
  • Import/export CSV com campos personalizados: dois passos (preview → confirm) com sessão em memória de 30 minutos para validação antes de gravar
  • Electron como wrapper seguro: nodeIntegration false, contextIsolation true, sandbox true — JWT e autenticação geridos pelos cookies do Chromium, zero código sensível no cliente