Imagem de capa do projeto: NEXUS PageSpeed Insights EM ANDAMENTO

Resumo técnico

Plugin NEXUS que integra o Google PageSpeed Insights (API v5) para auditoria de performance web: roda Lighthouse em mobile/desktop, captura os 4 scores (Performance, A11y, Best Practices, SEO) e os Core Web Vitals de laboratório (LCP, CLS, TBT, SI, FCP, TTI), com cache de 24h, histórico de runs, comparação entre execuções (delta de performance/LCP) e enriquecimento de URLs no Intelligence Hub.

Escopo executado

  • Backend backend.php (757 linhas): PAGESPEED_API_BASE (Google runPagespeed v5), PAGESPEED_CACHE_TTL = 86400 (24h), PAGESPEED_TIMEOUT = 90, PAGESPEED_CATEGORIES (performance, accessibility, best-practices, seo); config em DB::getConfig('pagespeed_settings') com api_key, auto_enrich (default true) e default_strategy (default mobile).
  • Tabela: pagespeed_install() cria pagespeed_runs (id, url_norm VARCHAR(768), url_hash CHAR(32), strategy, status ok/error/quota/needs_api, score_perf/a11y/bp/seo, lcp_ms, cls DECIMAL(10,4), tbt/si/fcp/tti_ms, metrics_json/categories_json/summary_json LONGTEXT, http_code, error, from_cache, task_id, created_at; índices idx_url_strategy + idx_created).
  • Lookup: normalize_url() (prefixo https://, host minúsculo), url_hash = md5(strategy|url), cache 24h por url_hash+strategy com status ok (param force ignora o cache); requisição via cURL (timeout 90s, connect 10s, SSL verify, Accept: application/json, User-Agent NEXUS PageSpeed/1.0).
  • Parse: scores 0-100 por categoria; métricas LCP, CLS, TBT, SI, FCP, TTI (+ INP e max-potential-fid quando presentes); lighthouseVersion, fetchTime e finalUrl persistidos.
  • Classificação de erros: HTTP 429/rate/quota → status quota; 403 "has not been used" → needs_api (sem key); demais → error com mensagem.
  • Histórico: pagespeed_history (page, limit ≤ 50, filtro por URL via hash mobile+desktop).
  • Comparação: pagespeed_compare por IDs (a/b) ou pelos últimos 2 runs OK da URL+strategy; delta de scores + delta LCP/TBT.
  • Teste de conexão: pagespeed_test_connection faz probe em example.com (categoria performance); 429 sem key → "API alcançável, mas quota anônima esgotada".
  • Intelligence Hub: pagespeed_intel_enrich (prioridade 48) — auto_enrich off → vazio; budget max_live_lookups (default 2, slice ≤ 5); summary PSI <strategy> · perf=N · LCP=Xms · CLS=Y, severidade clamp(5, 95, 100−perf); URLs restantes ficam pending.
  • API: 7 actions via PluginManager::registerApiAction (pagespeed_stats, pagespeed_settings, pagespeed_settings_save, pagespeed_test_connection, pagespeed_lookup, pagespeed_history, pagespeed_compare) — sessão + CSRF; settings_save com keep_key (campo vazio = manter a key atual).
  • Segurança da key: pagespeed_public_config() devolve apenas api_configured (bool), auto_enrich e default_strategy — a API key nunca é exposta no front.
  • UI Alpine.js (tab.php, 396 linhas): badge Key OK / Sem Key, 4 stat cards (Runs, OK, Hoje, Avg Perf), abas Analisar (mobile/desktop, 4 scores com cor por faixa ≥90/≥50/<50, cards Core Web Vitals), Histórico (tabela paginada ID/URL/Strat/Perf/LCP/Status/Quando; clique recarrega no Analisar com cache), Comparar (IDs ou URL; card Delta Perf + LCP Δ) e Configurações (passo a passo da API Key, strategy padrão, toggle auto-enrich, Testar conexão).
  • Fastr /pagespeed (fastr.json): arg_required=true, arg_key=url, pass_task_id=false → pagespeed_lookup.
  • Sem cronjob.json — plugin on-demand com cache local 24h para absorver repetições.

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (config em admin_configs; tabela pagespeed_runs)
  • Alpine.js + Tailwind CSS (premium light, ring emerald)
  • Sistema de plugins do NEXUS (PluginManager)
  • cURL → Google PageSpeed Insights API v5 (runPagespeed)

Tags operacionais

  • PageSpeed
  • Google
  • Lighthouse
  • Core Web Vitals
  • Performance
  • SEO

Resultado operacional

  • Auditoria completa em 1 chamada: 4 scores + 6 Core Web Vitals (lab) por run, em mobile e desktop, sem depender de extensão de navegador.
  • Cache 24h evita re-queima de quota: reconsultas de URLs recentes são servidas da tabela sem bater na API.
  • Regressão visível: a comparação entre runs (por IDs ou pela última URL) mostra o delta de performance e de LCP/TBT entre duas execuções.
  • Intelligence Hub contextualizado: com auto-enrich ativo, URLs de tarefas ganham resumo PSI <strategy> · perf · LCP · CLS e severidade derivada sem sair do NEXUS.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin NEXUS que integra o Google PageSpeed Insights (API v5) para auditoria de performance web: roda Lighthouse em mobile/desktop, captura os 4 scores (Performance, A11y, Best Practices, SEO) e os Core Web Vitals de laboratório (LCP, CLS, TBT, SI, FCP, TTI), com cache de 24h, histórico de runs, comparação entre execuções e enriquecimento no Intelligence Hub.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.