Web Push em produção
Tabela push_subscriptions criada no Supabase, VAPID keys provisionadas no Vercel e modal de opt-in publicado. Service worker com handlers de push e notificationclick. Disponível em todos os ambientes.
Estado vivo da plataforma de cursos da Brasil GEO: 38 trilhas em produção, sistema de gamificação completo, dashboard do aluno, content lint editorial e Web Push opt-in. Construída em colaboração com 5 LLMs orquestrados — Perplexity, GPT-4o, Gemini, Groq e Claude.
Arquivos TypeScript/TSX
Linhas de código
Capacidades em produção
Trilhas de curso publicadas
Novidades · Semana 28
Inspirado no painel "What's new" do Microsoft 365 admin center. Cada cartão é uma capacidade nova ou alterada — atualizado a cada deploy.
Tabela push_subscriptions criada no Supabase, VAPID keys provisionadas no Vercel e modal de opt-in publicado. Service worker com handlers de push e notificationclick. Disponível em todos os ambientes.
Nova página /admin/content-lint com formulário interativo, 8 ScoreCards e lista de issues coloridas por severidade. Server action lintContentAction reaproveita o validateContent sem expor METRICS_API_KEY.
ChallengesWidget agora usa role=progressbar com aria-valuenow/min/max e aria-live no loading. PushOptInModal tem role=dialog, aria-labelledby/describedby, role=alert no erro e aria-busy nos botões.
ChallengesWidget no Dashboard deriva 4 desafios por semana a partir do course_progress, sem nova tabela. Barra de progresso animada e contagem por desafio, com bônus de XP visível.
Fase 4 (Monetização Premium) marcada como temporariamente pausada. Decisão estratégica: deixar o fluxo de alunos crescer, anúncios começarem e a taxonomia amadurecer antes de introduzir tier pago.
Nova página de configurações do aluno: trilha preferida, opt-in/out de push, exclusão LGPD com confirmação DELETAR. DELETE /api/educacao/profile faz cascata via FK + supabase.auth.admin.deleteUser.
Capacidades · 37 entregues
Filtre por categoria para explorar as capacidades agrupadas por domínio. Inspirado na taxonomia de produto do Microsoft Learn e Azure Architecture Center.
Modal não intrusivo aparece após 8s na primeira visita ao Dashboard. Subscribe persistido em push_subscriptions com FK cascade. Service worker handlers de push e notificationclick. VAPID provisionado em produção via MCP browser automation.
EngajamentoGET /api/educacao/challenges deriva 4 desafios da course_progress sem nova tabela. ChallengesWidget no Dashboard com barra de progresso animada, contagem por desafio e XP bônus disponível.
Engajamento/admin/content-lint protegida por validateAdminSession. Server action lintContentAction chama validateContent direto, sem expor METRICS_API_KEY. Textarea + 5 opções, 8 ScoreCards e issues coloridas por severidade. Endpoint REST mantido para uso externo via curl.
ConteúdoChallengesWidget como section semantica com aria-labelledby, role=progressbar com aria-valuenow/min/max em cada barra e aria-live no loading. PushOptInModal com role=dialog, aria-labelledby/describedby, role=alert no erro e aria-busy nos botões.
Identidade & LGPDPágina de preferências do aluno: trilha preferida, ativar/desativar push, exclusão LGPD com confirmação DELETAR. DELETE /api/educacao/profile faz cascata via FK + supabase.auth.admin.deleteUser.
Identidade & LGPDComponente React que renderiza markdown com bold, headings h4 com border-bottom, listas, código inline e blockquotes — mantendo paridade visual com o template Jinja2 usado no pipeline curso-factory.
ConteúdoSchema.org Course + CourseInstance presente em todas as 38 páginas de curso. Inclui name, description, provider, hasCourseInstance com courseMode online e courseWorkload. Validado para rich results no Google Search.
Conteúdo9 componentes reutilizáveis: botões, formulários, modais, tipografia, ícones, layouts, tabelas, notificações e navegação. CSS modular com design atômico.
PlataformaAuditoria completa com 34 vulnerabilidades identificadas e 11 corrigidas. Autenticação obrigatória em endpoints sensíveis, sanitização contra injection, CSP hardened, rate limiting, SSRF blocklist, JWT timing-safe, fail-closed secrets. Scan externo Nuclei: 0 vulnerabilidades exploitáveis.
Segurança9 tipos branded que garantem integridade de dados via verificações em tempo de compilação: IDs únicos, valores monetários, estruturas críticas.
PlataformaControles avançados e atalhos de teclado: play/pause, volume, qualidade, legendas, avanço/retrocesso 10s, velocidade, tela cheia. Acessível via leitores de tela.
IA & Recomendação5 widgets funcionais: calendário de aulas, lista de tarefas, gráfico de desempenho, notificações e feed de atividades recentes, com atualização em tempo real.
Conteúdo8 tipos de questão: múltipla escolha, V/F, preenchimento, ordenação, associação, resposta curta, ensaio e drag-and-drop. Otimizado para mobile.
EngajamentoGoogle Consent Mode v2: usuários escolhem cookies e rastreamento. Ajuste dinâmico de tags com base nas preferências, mantendo conformidade total.
Identidade & LGPDTracker de progresso em tempo real: interações, tempos de conclusão, taxas de sucesso em quizzes. Análise preditiva para recomendações personalizadas.
EngajamentoJSON-LD com Schema.org para cursos, ProgressBar visual de conclusão, dados estruturados para rich results no Google Search.
AprendizadoAo concluir 100% dos módulos, o aluno recebe animação de confetti + modal para solicitar certificado por email via Resend.
EngajamentoComponente anterior/próximo curso em todos os 48 cursos, seguindo a sequência da trilha de aprendizado.
IA & Recomendação23 badges visuais de todos os cursos com indicador de conclusão, barra de progresso global e contagem de módulos/certificados na página /educação.
EngajamentoTracking de início de curso, conclusão de módulos e cursos, atualização de streaks e activity log em todos os 48 cursos via edu-analytics.
EngajamentoDashboard do aluno alimentado por localStorage real: 48 cursos sincronizados, streak compatível com dois formatos, storageKeys corrigidos.
EngajamentoSistema completo de cadastro e login: AuthProvider unificado no root layout, confirmação por e-mail com PKCE flow, callback /auth/callback com Suspense, redirect automático pós-login para /educacao/dashboard, tradução de erros em PT-BR.
Identidade & LGPDContent-Security-Policy hardened com connect-src para Supabase, rate limiting por IP no middleware, security headers (HSTS, X-Frame-Options, XSS Protection), health check /api/health com status de auth em tempo real.
Identidade & LGPDVarredura de segurança com 5 LLMs + Nuclei v3.7.1 (ProjectDiscovery). 34 vulnerabilidades mapeadas, 11 corrigidas: auth em endpoints críticos, sanitização PostgREST, CSP sem unsafe-eval, SSRF blocklist, JWT timing-safe, fail-closed secrets. Padrões de segurança criados em governance/security/ para todos os repositórios.
Identidade & LGPDCLI Python com 5 LLMs orquestrados e prompts externos de alta densidade (~200 linhas cada). Quality gate de 5 camadas: auto-correção de acentos (300+ mapeamentos), validação de conteúdo (tabelas, Bloom, andragogia, clichês), links, HTML e FinOps. Padrão editorial HSM/HBR/MIT Sloan enforced. US$ 3-8 por curso.
IA & RecomendaçãoHook useProgress faz merge automático de progresso: localStorage como fallback, Supabase como fonte principal quando autenticado. Migração transparente ao fazer primeiro login — nenhum progresso é perdido.
Identidade & LGPDRanking público em /educacao/leaderboard com filtro por liga (Bronze 0-499 XP, Prata 500-1.999 XP, Ouro 2.000+ XP). API GET /api/educacao/leaderboard com cache de 60s, anonimizacao de PII (sobrenome mascarado), top 30 com sequência, nivel e XP. Encerra a Fase 3 do roadmap original.
EngajamentoEndpoint GET /api/educacao/recommendations devolve top 5 proximos cursos com scoring determinístico: trilha preferida, match de interesses, nivel apropriado, pre-requisitos satisfeitos. Respeita progresso do estudante e fornece reasons textuais. Catálogo de cursos versionado em src/lib/course-catalog.ts. Antecipa a Fase 6 (IA Adaptativa) do roadmap.
IA & RecomendaçãoPorte TypeScript do accent_checker.py do curso-factory para src/lib/accent-validator.ts (220 entradas das mais frequentes, com mascaramento de URLs/imports/código). Integrado ao /api/student-signup como auto-correção soft do display_name. Reusa o aprendizado do incidente 2026-03-27 (55 hrefs corrompidos) preservando o que esta entre acentos de proteção.
Identidade & LGPDModal mostrado uma única vez no primeiro acesso ao Dashboard quando preferred_track e null. 5 trilhas (IA, SEO/GEO, Dev, Dados, Marketing) com descricoes e icones. Salva via PATCH /api/educacao/profile e dispara reload para o widget de recomendacoes pegar a trilha. Mata o problema do dashboard vazio.
IA & RecomendaçãoCron Vercel toda segunda-feira as 10h BRT dispara /api/educacao/digest/weekly que itera os student_profiles, calcula posição no leaderboard, gera 3 recomendacoes e envia email HTML personalizado via Resend. Auth via CRON_SECRET ou METRICS_API_KEY. Suporta dry-run para teste.
Identidade & LGPDValidador editorial em src/lib/content-validator.ts: detecta cliches proibidos (18 expressoes), verbos de Bloom de baixo nivel em objetivos, paragrafos longos, ausência de tabelas/blockquotes/exercícios, contagem de palavras. Score 0-100. Endpoint admin POST /api/admin/content-lint para validar artigos antes de publicar.
EngajamentoService worker registrado no /sw.js com 3 estrategias: cache-first para assets estaticos, stale-while-revalidate para páginas /educacao/* e catalogo público, network-only para endpoints autenticados. Avanca a Fase 5 (Mobile PWA) — manifest já existia, agora a plataforma funciona offline para conteúdo já visitado.
IA & RecomendaçãoRota /educacao/recomendacoes com UI completa do recomendador: cards por trilha, reasons explicitas, score visivel, indicador de personalização. Widget compacto integrado ao Dashboard do aluno (RecommendationsWidget) consumindo a mesma API. Fecha o loop UX da Fase 6 (IA Adaptativa).
EngajamentoGET /api/educacao/health verifica em tempo real: catalogo (in-memory), variaveis Supabase, conectividade e contagens das tabelas student_profiles e course_progress. Devolve 200/503 para uptime checkers e timing por check. Fallback gracioso no leaderboard quando ranking estiver indisponivel — página não quebra mais.
EngajamentoEndpoint GET /api/educacao/catalog expoe os cursos da plataforma como ponte oficial entre landing-page-geo e curso-factory. Filtros por trilha e nivel, stats agregadas, cache de 1h, CORS aberto. Permite que o curso-factory descubra o que já esta publicado e que integradores externos (Looker Studio, AI agents) leiam sem scraping.
EngajamentoBug corrigido em /api/student-signup: a checagem de e-mail duplicado usava listUsers({perPage:1}) e nunca disparava. Substituido por query direta em student_profiles, eliminando criacao silenciosa de duplicatas e devolvendo HTTP 409 com mensagem clara em PT-BR.
Identidade & LGPDCronograma · Sprint a sprint
Cada marco mapeia para um sprint semanal — Semana 28 é o estado atual
Design System com 9 componentes, Stack de segurança completa, TypeScript com tipos branded
Semanas 1-42FA, JWT, AES, conformidade LGPD implementada, ConsentBanner com Google Consent Mode v2
Semanas 5-8VideoPlayer para 21 cursos, Analytics Educacional, Dashboard do Aluno com 5 widgets
Semanas 9-128 tipos de questão, SEO CourseSchema com JSON-LD, ProgressBar visual
Semanas 13-167 execuções, 5 LLMs (Claude, GPT-4o, Gemini, Perplexity, Groq), pipeline completo
Semanas 17-20Pipeline AAA automatizado: Jinja2 templates, geração determinística de TSX, validação de acentos, budget guard $5/$10, 5 testes passando
Semana 21Sistema de XP (10 por módulo, 100 por curso), 11 níveis, 13 achievements, streaks com ícones SVG, dashboard aprimorado. Inspirado no Duolingo (3.6x engajamento com streaks).
Semana 22XPWidget visual com nível e progresso animado, confete ao completar módulo/curso, celebração fullscreen, QuickStats com ícones SVG (zero emojis), integração Framer Motion.
Semana 225 integrações simultâneas: celebração com confetti, navegação entre cursos, progresso global com 23 badges, analytics de educação conectado, dashboard com dados reais do localStorage.
Semana 23Busca semântica answer-first no hero da /educação. pgvector no Supabase, dois índices (Recommendation + Evidence), intent parser determinístico, hybrid retrieval (dense + lexical + metadata) com RRF, re-ranking com progresso do aluno, resposta inline com streaming. Preparado para 300 cursos.
Semana 23CLI Python com pipeline de 5 etapas: Research (Perplexity), Draft (GPT-4o), Analyze (Gemini), Classify (Groq), Review (Claude). Circuit breaker por provider, cache SHA-256 com TTL 24h, fallback chain, budget guard, cost tracker. Quality gate com 4 validadores (acentos, HTML, links, consolidado). Geração determinística de TSX via Jinja2. 12 cursos configurados, US$ 3-8 por curso completo.
Semana 24Prompts externos de alta densidade (~200 linhas cada em Markdown). Agentes carregam automaticamente de src/templates/prompts/. Quality gate expandido para 5 camadas: auto-correção de acentos (300+ mapeamentos com fix_accents()), content_checker.py (tabelas, exercícios, Bloom nível 3-6, 6 princípios de Knowles, 18 clichês banidos, contagem de palavras 2.500-4.000), links, HTML e FinOps. Padrão editorial HSM/HBR/MIT Sloan enforced por validação automática.
Semana 25Supabase Auth com e-mail + senha, confirmação por e-mail via PKCE flow, página /auth/callback com Suspense e hash error handling, AuthProvider unificado no root layout (estado compartilhado em todas as rotas), redirect automático pós-login para /educacao/dashboard, auto-open de modal via query param, race condition resolvida com mounted guard, profile upsert com fallback para trigger.
Semana 24Content-Security-Policy com connect-src para Supabase (resolução do bloqueio de auth em produção), middleware com rate limiting (30 req/min geral, 10 req/min para geo-check), security headers HSTS/XSS/DENY, endpoint /api/health com diagnóstico de Supabase e auth em tempo real, tradução completa de erros de autenticação para PT-BR.
Semana 24Varredura completa de segurança: Geo Orchestrator com 5 LLMs (Perplexity pesquisou, Gemini auditou, Groq classificou, Claude gerou patches, GPT-4o redigiu relatório). 34 vulnerabilidades mapeadas e classificadas por CVSS. 11 correções implementadas: auth obrigatória em /api/auth-confirm, fallback secrets removidos, PostgREST injection sanitizada, CSP sem unsafe-eval, SSRF blocklist, JWT timing-safe. Scan externo Nuclei v3.7.1: 0 vulnerabilidades em 5.764 templates. Padrões de segurança criados: SECURITY.md, GitHub Actions (CodeQL + Gitleaks), PR template, security-baseline.ts, Supabase hardening guide, templates Nuclei customizados.
Semana 26Encerrou a peca pendente da Fase 3 do roadmap original: ranking público em /educacao/leaderboard com filtro por liga (Bronze, Prata, Ouro), API com cache de 60s, anonimizacao de PII e top 30 com sequência, nivel e XP. Frontend animado com Framer Motion e cards de estatistica.
Semana 27Preview da IA Adaptativa: API /api/educacao/recommendations entrega top 5 proximos cursos com scoring determinístico baseado em trilha preferida, interesses, nivel e pre-requisitos. Catálogo de cursos versionado em código. Funciona para anonimo e personalizado. Latência < 100ms, custo zero, base preparada para v2 com pgvector.
Semana 27Auditoria dos forms /admin/login e LoginModal de estudante: ambos passaram na revisão (CSRF, rate limit, tradução de erros PT-BR). Bug corrigido em /api/student-signup que criava duplicatas silenciosamente por causa de listUsers({perPage:1}); agora consulta student_profiles diretamente e devolve HTTP 409.
Semana 27ChallengesWidget no Dashboard derivando 4 desafios da course_progress sem nova tabela. PushOptInModal com VAPID + tabela push_subscriptions no Supabase (FK cascade). /educacao/configuracoes para escolher trilha, ativar/desativar push e exclusão LGPD com confirmação DELETAR.
Semana 28/admin/content-lint com formulário interativo, 8 ScoreCards e issues coloridas. Server action lintContentAction sem expor METRICS_API_KEY. ChallengesWidget e PushOptInModal ganharam role=progressbar, role=dialog, aria-live e aria-busy. JSON-LD Course confirmado nas 38 trilhas.
Semana 28Tabela push_subscriptions executada no SQL Editor do Supabase via Claude in Chrome MCP. 3 env vars VAPID provisionadas no Vercel pelo paste de .env automatizado. Redeploy de produção disparado. Fluxo browser-automation-first para tarefas operacionais autenticadas.
Semana 28Fase 4 (Monetização Premium) marcada como pausada. Plataforma fica 100% gratuita enquanto o fluxo de alunos cresce, anúncios começam e a taxonomia amadurece. Reabre quando o volume justificar gateway de pagamento (decisão pendente: Lastlink vs Stripe).
Semana 28Fases estratégicas
6 frentes de trabalho — uma pausada estrategicamente, cinco em evolução contínua
Duração: 4 semanas
Duração: 4 semanas
Duração: 4 semanas
Duração: TBD
Duração: 4 semanas
Duração: 4 semanas
Saúde da plataforma
Indicadores de performance, segurança e qualidade
99.9%
Uptime
<1s
Tempo de carregamento
A+
Score de segurança
100
Lighthouse Score
Multi-LLM
Cada modelo contribui com sua especialidade para o resultado final
Anthropic
Revisão final: acentuação PT-BR, qualidade editorial HSM/HBR, correção ativa
OpenAI
Redação com andragogia, Bloom nível 3-6, tabelas, exercícios profissionais
Análise de qualidade em 7 dimensões, conformidade andragógica
Perplexity
Pesquisa com fontes citáveis, análise competitiva, dados 2026
Groq
Classificação de nível, tags, pré-requisitos, duração estimada
38 trilhas gratuitas e progressivas, do setup ao GEO avançado. Construídas com a mesma stack documentada neste roadmap. Sem paywall enquanto a base de alunos cresce.