sistema2026publicadotecnologia e imaginação / infraestruturas culturais

Elo — Sistema de Solicitações Pedagógicas

Sistema que substitui e-mail e WhatsApp na coordenação entre o Núcleo Pulsante e as 4 unidades do Programa Etim (Senac RJ), com rastreabilidade e histórico completo.

O Elo é um sistema web que substitui a troca de solicitações pedagógicas entre o Núcleo Pulsante — coordenação central do programa Etim, Senac RJ — e suas quatro unidades — Barra da Tijuca, Cápsula, Politécnico e Niterói — que antes acontecia por e-mail e WhatsApp, sem rastreabilidade, sem prazos claros e sem histórico centralizado.

Hoje o Núcleo cria uma solicitação, escolhe quais unidades devem responder, acompanha o status de cada uma em tempo real — pendente, respondido, atrasado — e mantém um histórico completo e exportável em PDF de tudo que já aconteceu. Sistema real, com autenticação própria por unidade, banco relacional e deploy público gratuito: é a ferramenta que o Núcleo Pulsante usa hoje para coordenar as quatro unidades, em produção desde julho de 2026.

Funcionalidades principais

  • Autenticação real por login e senha, com cada uma das 5 contas — Núcleo mais 4 unidades — isolada ao que lhe cabe
  • Criador de solicitações com 4 tipos de pergunta: texto curto, parágrafo, escolha única e link
  • Rascunhos — o Núcleo monta uma solicitação aos poucos, salva, edita e só então envia
  • Painel por unidade, mostrando só o que está pendente ou já foi respondido
  • Histórico completo de eventos — criação, notificação, resposta, exclusão — com filtros
  • Exportação em PDF das respostas e do histórico completo, gerada inteiramente no navegador
  • Modo claro/escuro com persistência de preferência
  • Notificações internas quando uma solicitação é criada ou respondida

Capturas de tela

Painel do Núcleo Pulsante, com rascunhos e solicitações em diferentes status

Painel do Núcleo — rascunhos e solicitações enviadas, por status — texto borrado por preservação institucional

Criação de uma nova solicitação, com perguntas de diferentes tipos

Nova solicitação — texto curto, parágrafo, escolha única ou link — texto borrado por preservação institucional

Detalhe de uma solicitação, com respostas das unidades e exportação em PDF

Detalhe da solicitação — respostas por unidade e exportação em PDF — texto borrado por preservação institucional

Visão de uma unidade, mostrando apenas as solicitações endereçadas a ela

Painel da unidade — só o que é endereçado a ela, sem ruído das demais — texto borrado por preservação institucional

Stack técnica

  • React 18 + Vite, CSS puro com design tokens
  • Node.js + Express, como função serverless
  • PostgreSQL (Supabase), acesso via Prisma ORM
  • JWT + bcrypt para autenticação
  • jsPDF, geração de PDF no cliente
  • Vercel, região gru1 (São Paulo) — frontend estático e backend serverless

Decisões técnicas

  • Performance de login em ambiente serverless. O login inicialmente levava de 1,3 a 2,4 segundos, pela combinação do custo padrão do bcrypt com a distância entre a região do servidor e a do banco. Resolvido fixando a função na mesma região do banco e reduzindo o custo do bcrypt, com migração automática e transparente do hash das contas existentes no próximo login bem-sucedido — resultado: login em 0,3 a 0,7 segundos.
  • Paginação de PDF sem cortar texto. A primeira versão da exportação cortava respostas longas no fim da página; a correção final escreve o texto linha a linha, com verificação de quebra de página a cada linha, mantendo o cabeçalho colado ao início do conteúdo mesmo quando a resposta ocupa várias páginas.
  • Disponibilidade do banco gratuito. O plano gratuito do Supabase pausa projetos após 7 dias de inatividade; resolvido com uma rota de keepalive chamada uma vez por dia por um cron job da própria Vercel.

Números

  • 5 contas ativas — Núcleo Pulsante e as 4 unidades do programa
  • 4 tipos de pergunta suportados na criação de solicitações
  • Login em 0,3 a 0,7 segundos, após a otimização de performance
  • Em produção desde julho de 2026, com solicitações reais criadas, respondidas e concluídas pelo fluxo completo