Neuroredes
Plataforma de Análise de Redes Organizacionais (ONA) que mapeia relacionamentos formais e informais dentro das empresas. Esta documentação é uma referência funcional: descreve o que cada módulo faz, quem pode acessar o quê, e como as peças se conectam.
O que é o Neuroredes
Neuroredes coleta respostas de pessoas sobre suas conexões com colegas — quem pede ajuda a quem, quem influencia quem, em quem se confia — e transforma esses dados em três artefatos principais: um grafo navegável da rede, um dashboard com métricas analíticas, e relatórios em Excel para uso executivo.
O ciclo de uso é: a equipe da empresa cria uma pesquisa, cadastra os respondentes, dispara magic links por email ou WhatsApp, acompanha o status do envio, e — à medida que as respostas chegam — consulta dashboard, grafo e relatórios.
Stack
| Camada | Tecnologias |
|---|---|
| Frontend | Next.js 16 (App Router, Server Components), React 19, TypeScript, Tailwind CSS v4 + CSS Modules, fonte Montserrat |
| Validação | Zod (schemas em lib/zod/) |
| Visualização | Sigma.js + Graphology (grafos), Recharts (gráficos do dashboard) |
| Banco & Auth | Supabase — PostgreSQL, Supabase Auth (email/senha + convites), Edge Functions, Storage |
| Computação pesada | AWS Lambda — três funções HTTP (dashboard, grafo, excel) e duas SQS-triggered (envio em massa de email e WhatsApp) |
| Mensageria assíncrona | AWS SQS, AWS SES (email), Meta WhatsApp Business API |
| Idioma da UI | Português (pt-br), inclusive nas mensagens de erro |
Arquitetura macro
O navegador conversa com o Next.js. O Next.js, por sua vez, distribui o trabalho entre três caminhos conforme a operação: chamadas RPC diretas ao Postgres do Supabase para CRUDs simples, Edge Functions para lógica de domínio que envolve múltiplas tabelas e regras, e Lambdas HTTP para computação pesada que retorna dados prontos para visualização. Tarefas assíncronas (envios em massa) saem da Edge Function, passam por uma fila SQS, e são consumidas por Lambdas que escrevem o status de volta no Supabase.
Padrões de chamada
- RPC
- Operações simples (listagens, CRUDs diretos). Vivem em
rpc/<dominio>/e são chamadas direto viasupabase.rpc(). Substituíram parte das Edge Functions originais. - Edge Functions
- Lógica que orquestra múltiplas tabelas, validações ou efeitos colaterais (envio de email, exclusão em cascata). Em
supabase/functions/. - Lambda HTTP
- Computação pesada com Neurocalc ou geração de Excel. URLs em variáveis
NEXT_PUBLIC_*_PROCESSOR_URL; o Lambda lê credenciais do Supabase via AWS Secrets Manager. - Lambda SQS
- Disparados por mensagens em filas SQS. Consomem em lotes, executam o envio e atualizam o status no Supabase.
Papéis & permissões
A plataforma tem três papéis autenticados e um modo público (sem login).
O papel é resolvido a partir do perfil do usuário e armazenado no cookie
user_profile, lido pelas Server Components e validado pelo
middleware do Next.js.
| Papel | Acesso | Observação |
|---|---|---|
| ADMIN | CRUD total em todas as organizações, todas as pesquisas, todos os respondentes. Pode gerar relatórios executivos e detalhados. | company_id é null; usar empresa_id do recurso-alvo. |
| SURVEYOR | Gerencia pesquisas, respondentes e envios da própria organização. Vê dashboard e grafo dos próprios dados. | Tem company_id definido; backend impõe escopo por empresa. |
| VIEWER | Apenas leitura: relatórios Excel, grafo, dashboard. Sem botões de gestão. | Bloqueado de /companies, /surveyors e ações de envio. |
| Público | Acesso à pesquisa via magic link em /responder-pesquisa/[token]. Sem login. |
Token validado em runtime — pode estar expirado, revogado ou invalidado. |
ADMIN e SURVEYOR convivem com perfis distintos: ADMIN vive em
mydb.users, SURVEYOR em mydb.surveyors, VIEWER
em mydb.survey_viewers. Todos compartilham
auth.users do Supabase para credenciais. Detalhes em
Autenticação & Papéis.
Mapa de módulos
Cada módulo tem sua própria página com regras de negócio, fluxos e referências cruzadas.
mydb.*, edge functions, migrations e padrão RPC.
13 — Plataforma
Lambdas (AWS)
Três HTTP e duas SQS-triggered. Fluxo, secrets e responsabilidades.
Como rodar localmente
O projeto não usa Supabase local — desenvolvedores se conectam direto ao
ambiente em nuvem. Não há seed nem stack Docker; basta credenciais válidas
no .env.
cp .env.example .env.local
# preencha NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY,
# SUPABASE_SERVICE_ROLE_KEY e as URLs das Lambdas (opcionais — se ausentes,
# o frontend cai em Edge Functions equivalentes para dashboard/graph/excel)
npm install
npm run dev # Turbopack
npm run build # build de produção
npm run lint # ESLint
npm run format # Prettier
Existem migrations antigas que não estão versionadas neste repositório.
Subir um Postgres local a partir de supabase/migrations/
não vai resultar num esquema completo — use o ambiente em nuvem.
Sobre esta documentação
Esta documentação é uma referência funcional: serve para consultar como cada módulo se comporta, quais regras de negócio se aplicam e como as integrações fluem. Não é um tutorial de onboarding nem um whitepaper executivo.
O conteúdo é construído de forma incremental — cada página de módulo será preenchida em iterações separadas. As páginas marcadas como em construção ainda não têm conteúdo, mas a navegação e a estrutura já estão prontas.
Convenções
- Todo texto está em português brasileiro, espelhando a UI do produto.
- Nomes de tabela aparecem qualificados pelo schema (
mydb.users). - Caminhos de arquivo são relativos à raiz
pesquisa/. - Blocos Nota esclarecem detalhes; blocos Atenção sinalizam pegadinhas.