Última atualização: 23 de abril de 2026
Dashboard de inteligência de dados e analytics comercial open-source, com autenticação por perfil, dashboards de performance, grupos de visibilidade dinâmicos, sincronizações com sistemas externos e telas públicas para TV corporativa.
O projeto concentra frontend, backend e operação em uma única base Next.js (App Router). Atende três cenários:
- Gestão executiva: visão completa no painel admin (vendas, ligações, metas, estoque, TOTVS, qualidade).
- Operação de vendas: visão individual no painel da vendedora.
- Exibição corporativa: ranking e wallboard para TV (3 slides automáticos).
Dados consolidados no Supabase e enriquecidos por rotinas de sincronização com sistemas externos.
| Tecnologia | Versão | Uso |
|---|---|---|
| Next.js | 16.2.2 | App Router (frontend + API routes) |
| React | 19.2.0 | UI |
| TypeScript | 5.7.3 | Tipagem |
| Tailwind CSS | 3.4.17 | Estilos |
| Recharts | 2.15.0 | Gráficos |
| Framer Motion | 12.35.2 | Animações |
| Supabase | 2.49.4 | Auth + Postgres + RLS |
| pg | 8.20.0 | Conexão direta TOTVS |
| Docker | Chainguard Node | Produção |
| Traefik | — | Proxy reverso + HTTPS |
app/ → Páginas e rotas API (App Router)
components/ → Componentes visuais e dashboard principal
hooks/ → Estado de filtros, dados e UI
lib/ → Integrações, segurança e funções puras
scripts/ → Sincronização e manutenção (.mjs)
supabase/ → Migrações SQL (43 arquivos)
docs/ → Documentação técnica completa
config/ → Configuração de vendedoras
npm install
npm run devAplicação em: http://localhost:3000
npm run build
npm run start# PowerShell — lê Supabase URL/key do .env
$envContent = Get-Content ".env" -Raw
$supabaseUrl = ([regex]::Match($envContent,'(?m)^NEXT_PUBLIC_SUPABASE_URL=(.+)$')).Groups[1].Value.Trim()
$anonKey = ([regex]::Match($envContent,'(?m)^NEXT_PUBLIC_SUPABASE_ANON_KEY=(.+)$')).Groups[1].Value.Trim()
docker build --build-arg "NEXT_PUBLIC_SUPABASE_URL=$supabaseUrl" --build-arg "NEXT_PUBLIC_SUPABASE_ANON_KEY=$anonKey" -t sales-analytics-dashboard:latest .docker compose up -d
docker compose logs -f analytics-dashboard# Push
docker tag sales-analytics-dashboard:latest seuusuario/sales-analytics-dashboard:latest
docker push seuusuario/sales-analytics-dashboard:latest
# Servidor (com Traefik + HTTPS)
docker compose -f docker-compose.traefik.yml pull
docker compose -f docker-compose.traefik.yml up -d| Comando | Descrição |
|---|---|
npm run sync:totvs-faturados:apply |
Sync TOTVS faturados |
npm run sync:velis-billing:apply |
Sync Velis billing |
npm run sync:estoque:apply |
Sync estoque TOTVS |
npm run sync:bitrix-users |
Sync usuários Bitrix |
Todos os scripts geram logs em logs/*.jsonl e usam lock files para evitar concorrência.
.next/
node_modules/
logs/
.env* (exceto .env.example)
*.tsbuildinfo
traefik/letsencrypt/acme.json
.sync-progress.json
tmp_*
Ponto de entrada: docs/00-INDICE.md
Guias úteis:
- docs/ARCHITECTURE.md — visão técnica consolidada
- docs/08-DOCKER.md — build, deploy e diagnóstico Docker
- docs/06-SCRIPTS-E-SINCRONIZACAO.md — scripts de sync
- docs/12-CONTROLE-DE-ACESSO-VIA-SQL.md — gestão de acessos via SQL
- docs/NEXT_STEPS_API_QUERIES.sql — queries prontas
A trilha de leitura dos documentos é encadeada com "Próxima leitura sugerida" ao final de cada arquivo.
- Nunca versionar
.env. - Variáveis de ambiente centralizadas via
lib/env.ts(readEnv()). - Webhook Bitrix protegido com secret + rate limit +
safeEqual(). - Avatar proxy com proteção SSRF (allowlist de hosts).
- Cabeçalhos de segurança (CSP, HSTS, Referrer-Policy) no
next.config.mjs. - Se qualquer segredo foi exposto, rotacionar imediatamente.
- Ver análise completa: docs/13-SEGURANCA-ATUAL.md.