Node.jsExpressMongoDBVue.jsMobile-FirstERP IntegrationJWT
SRCAL — Client Portal integrated with internal ERP
Contexto
A Calcário SRCAL é uma empresa brasileira de insumos agrícolas cujo ERP interno roda em rede local e não tem interface web para clientes externos. Os clientes (produtores rurais, empresas agrícolas) tinham que ligar no comercial para saber status de pedido, toneladas entregues ou data de carga — zero visibilidade, zero self-service.
O portal entrega essa visibilidade direto no navegador, sem alterar o ERP: o backend faz o papel de adaptador, expondo os dados internos como uma API moderna para o frontend. O ERP continua exatamente como era, mas agora o cliente final vê o que precisa.
Desafio
- Integrar sem alterar: o ERP é legado, crítico e não pode ser modificado. Toda a integração tinha que acontecer na camada externa.
- Performance sem sobrecarregar o ERP: o ERP não foi feito para receber tráfego de portal público. Latência e carga tinham que ser contidas do lado do portal.
- Resiliência a quedas do ERP: o ERP pode cair. O portal tinha que degradar com mensagem clara, sem expor o erro técnico para o cliente.
- Multi-empresa por usuário: cada usuário podia ser cliente de várias empresas (CNPJs/CPFs diferentes) e precisava alternar entre elas sem fricção.
- Modo duplo de uso: app standalone e embed dentro do site institucional — a mesma base tinha que servir os dois cenários sem retrabalho.
- Pesquisas internas sem ferramenta dedicada: a empresa queria pesquisas de satisfação com estatísticas por pergunta, sem contratar SaaS externo.
Solução
- Adapter backend sobre o ERP: o portal conversa com o ERP através de uma camada de adaptação que traduz o protocolo legado para uma API moderna, sem tocar no sistema interno.
- Cache com refresh automático: dados de alta leitura (lista de clientes) ficam em cache e são refrescados em background, mantendo o ERP livre de carga repetitiva.
- Tratamento de erro amigável: se o ERP está fora, o usuário vê uma mensagem clara — não um erro técnico. O sistema se recupera sozinho quando o ERP volta.
- Seleção multi-empresa: o usuário loga uma vez e escolhe qual empresa quer consultar; cada troca é instantânea.
- Extrato fiscal e programação de carga: cada pedido tem drill-down em extrato (NF, placa, toneladas entregues vs. faltantes) e em programação (data, placa, motorista, transportadora, toneladas, status) — ambos imprimíveis como relatório PDF.
- Modo iframe embutido: o portal detecta quando está embedado no site institucional e renderiza um card slim "Acessar área do cliente" em vez do app completo. Mesma base, dois produtos.
- Pesquisas com estatísticas por pergunta: admin cria pesquisa alvo por cliente, define prazo e questões; respostas geram estatísticas visuais por pergunta para decisão interna.
Resultados
- Portal em produção (
painel.calcariosrcal.com.br) atendendo clientes reais da Calcário SRCAL. - Self-service eliminou o ciclo de "ligar no comercial para saber status de pedido".
- Funciona em dois modos (standalone e embed institucional) com o mesmo código.
- Módulo de pesquisas ativo alimentando decisões internas com dados reais dos clientes.