02 · BI · Analytics · Full StackConcluídoVersão demonstrativa

Plataforma de Analytics e BI Executivo

Plataforma empresarial de Business Intelligence e analytics para centralizar indicadores estratégicos, operacionais e acadêmicos. Integra múltiplas bases transacionais via pipelines automatizados serverless, entregando visualizações interativas para diferentes perfis de usuários com permissões granulares.

Papel
Arquitetura end-to-end serverless · Design de dados + 42 migrations · ETL / 12 cron jobs idempotentes
Período
Operação contínua
Código
Privado
Tipo
Case profissional
Stack
React 19TypeScript 5.9Vite 7Tailwind CSS 4Recharts 3Radix UISWR 2.4Zod 4Framer Motion 12Firebase Auth (Admin SDK)Supabase · PostgreSQL · RLSMySQL (mysql2/promise)Vercel Functions + CronsResend · Brevo fallbackVitest + v8 CoveragejsPDF · AutoTable · xlsx

Contexto

Plataforma empresarial de Business Intelligence e analytics 100% SERVERLESS em produção — centraliza KPIs estratégicos, operacionais e acadêmicos de múltiplas fontes transacionais em uma fonte única de verdade analítica.

  • ~80 componentes React reutilizáveis (UI + Dashboard + Admin)
  • 42+ migrations versionadas (Supabase/PostgreSQL · +30 tabelas)
  • 12 cron jobs automatizados de ingestão/sincronização via Vercel Crons
  • 5 módulos analíticos especializados (Visão Geral · Expedição · Retenção · Documentação · Performance)
  • 5 níveis hierarquia RBAC + 13 view keys permissão granular por feature
  • 100% serverless em produção (Vercel Functions + rewrites)

Problema

6 desafios técnicos que eu resolvi no projeto:

  • Ingestão de milhões de registros em bases MySQL LEGADO dentro do timeout 10s das Vercel Functions
  • Verificação 13 permissões × múltiplos componentes em cada render → re-renders excessivos
  • Dashboard Denso com 50+ métricas + 15 gráficos SVG → First Contentful Paint ruim e jank no scroll
  • Autenticação Firebase OAuth em preview deploys com URLs dinâmicas + popup bloqueado anti-tracker
  • 8 tipos de visualização × setores com métricas de naturezas diferentes → informação mal apresentada
  • Formatação consistente de valores monetários, percentuais e inteiros com semáforo e arredondamento

Usuários

5 perfis distintos compartilhando o mesmo produto com contexto por setor/departamento.

  • Admin Master — visão nacional, usuários, roles, setores, SLA integrações, system health
  • Admin — backoffice CRUD: usuários, indicadores, setores, trilha de auditoria, ajuda
  • Manager/Editor — lançamento de valores em lote, entrada manual por setor, histórico por mês
  • Viewer por setor — dashboard setorial, exports PDF/Excel, relatórios de permissão
  • Analistas operacionais — busca, filtros, drill-down, tabelas de outliers, alertas por email

Papel

Full Stack Engineer — arquitetura end-to-end, design de dados, pipeline ETL, implementação frontend/backend e governança de qualidade.

Backend Serverless + Shared Services

  • Modelei banco PostgreSQL Supabase com 42+ migrations, RLS habilitado, índices compostos, soft-delete `deleted_at` + trigger
  • Implementei HANDLER MESTRE de 12 cron jobs idempotentes (ETL, sync, cleanup, report) com janelas deslizantes drift + ON CONFLICT UPDATE
  • Desenvolvi Service + Repository UserViewPermissions com teste Vitest ≥ 80% em 4 dimensões (lines/statements/functions/branches)
  • Criei audit log com Zod schema + hash SHA-256 por entrada + monitor atividade suspeita com webhook alertas
  • Integrei email multi-provedor (Resend · Brevo) com fallback automático
  • Estabeleci SSO Google OAuth Firebase (Client + Admin SDK) + `auth_time` sessão máx 5 dias + status pendente padrão

Frontend React 19 + Vite 7 + Analytics

  • Arquitetei ~80 components: Design System Radix Tailwind shadcn-style · Shared Dashboard · Admin Components
  • Implementei AuthContext com cache permissões ETag (95% das req → 304 Not Modified 0 bytes) + validação sessão
  • Construí GenericSectorDashboard + heurística sector-intelligence (businessCategory · dataShape · recommendedVisual · sortWeight)
  • Desenvolvi algoritmo Auto-fit MetricCard via ResizeObserver + binary search font-size (sem overflow horizontal)
  • Montei 8 tipos visualização Recharts 3: bar · area · line · bar-limits · line-limits · radial · pie · radar
  • Entreguei ProtectedRoute 3 níveis (auth → role → viewPermission) · tema claro/escuro next-themes · Vite manualChunks vendor split

Arquitetura

Arquitetura HEXAGONAL simplificada 3 camadas, cada endpoint em `app/api/*` vira Vercel Function isolada com autoscaling.

Server Shared Services (server/_services/)

  • auth.ts — Firebase Admin SDK verifyToken + fallback Identity Toolkit REST
  • db.ts — CRUD usuários · audit logs · Zod validation · saveAuditLog SHA-256
  • supabase.ts / adminSupabase.ts — singleton clients anon vs service role key
  • email.ts — Resend · Brevo fallback automático
  • monitor.ts — detecção atividade suspeita · webhook alerta
  • userViewPermissions.ts — Service + Repository pattern + ETag header compose

Client Layer + Analytics Engine

  • Pages Routes code-splitting · Vite 7 manualChunks (react-vendor · firebase-vendor · ui-vendor · charts-vendor)
  • Contexts Auth · Year · Hooks useDashboardData · useIndicadores · useCompanyStats
  • Client Services HTTP + SWR cache dedupe 60s · focusThrottle · refreshInterval programático
  • CASL-like Protections: ProtectedRoute + navItems dinâmico + PermissionDialog useDeferredValue busca 300+ itens
  • Dashboard Engine: ExecutiveSummary · GenericSectorDashboard · MetricCard autofit · sector-intelligence heurística
  • UI: Tailwind 4 @theme tokens · Radix headless · Framer Motion micro-interações · Sheet menu mobile responsive 2400px

Resultado

Resultados técnicos mensuráveis após estabilização em produção.

Métricas de engenharia

  • INGESTÃO: 6 bases MySQL → 1 fonte verdade analítica Supabase; processamento diário ~45min manual → <2min automático
  • PERFORMANCE: FCP dashboard <1,8s após cache; <4s primeira carga sem cache; SWR dedup 60s
  • SEGURANÇA: 0 incidentes acesso não autorizado; status pending padrão novos usuários; trilha 100% escrita com SHA-256
  • PERMISSÕES: ETag cache 90%+ 304 Not Modified; admin libera/retrai view key individual em <30s
  • QUALIDADE: Coverage permissões ≥80% Linhas/Statements/Funções/Branches; ~50 suites Vitest UI/hooks/lógica
  • ACESSIBILIDADE: Radix ARIA · WCAG AA contraste temas claro/escuro · breakpoint 320 até desktop 2400px
  • ESCALA: 5 módulos analíticos especializados · 8 tipos visualização · lançamento em lote Excel import inline
  • SERVERLESS: zero-op production · autoscaling Vercel Functions · cron expressão UTC nativa vercel.json

* Interface, arquitetura e detalhes técnicos apresentados para demonstrar raciocínio de engenharia. Regras de negócio, dados comerciais, identidade de clientes, nomes de instituições, valores financeiros e integrações específicas de parceiros são confidenciais e foram removidos ou anonimizados.