Lighthouse Monitoring Dashboard & Custom SEO Plugin

Technology: lighthouse · Category: monitoring · Last reviewed: 2026-08-23

Source: https://tech-stack.codeamanilabs.org/guide/lighthouse

Insight:

Lighthouse gives you an automated, repeatable way to measure and improve Performance, Accessibility, Best Practices, and SEO (the PWA category was retired in Lighthouse 12). Run it on every deploy with custom plugins for your domain (e.g. KSO index presence, county geo signals, structured School data). The dashboard here lets you pick a site and instantly see scores + metrics + history. Use the plugin system to ship your own audits as a shareable node module. Grounded in official Chrome + Google Search docs; reviewed 2026-08-23 against lighthouse 13.4.

██╗     ██╗ ██████╗ ██╗  ██╗████████╗██╗  ██╗ ██████╗ ██╗   ██╗███████╗███████╗
██║     ██║██╔════╝ ██║  ██║╚══██╔══╝██║  ██║██╔═══██╗██║   ██║██╔════╝██╔════╝
██║     ██║██║  ███╗███████║   ██║   ███████║██║   ██║██║   ██║███████╗█████╗  
██║     ██║██║   ██║██╔══██║   ██║   ██╔══██║██║   ██║██║   ██║╚════██║██╔══╝  
███████╗██║╚██████╔╝██║  ██║   ██║   ██║  ██║╚██████╔╝╚██████╔╝███████║███████╗
╚══════╝╚═╝ ╚═════╝ ╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝ ╚═════╝  ╚═════╝ ╚══════╝╚══════╝

Lighthouse Monitoring Dashboard & Custom SEO Plugin

Focus: Run Google Lighthouse on demand, pick from your sites, see full scores + Core Web Vitals + custom domain audits. Includes a production-ready custom Lighthouse plugin you can publish to npm. Everything you need for continuous performance + SEO monitoring.

Why Lighthouse in 2026

Lighthouse is the official automated auditor from the Chrome team. It produces the numbers that power:

It now covers four scored categories — the PWA category was removed in Lighthouse 12 (May 2024); installability/service-worker checks moved to the Chrome DevTools Application panel and are no longer scored by Lighthouse:

Category What it checks Why it matters for this stack
Performance FCP, Speed Index, LCP, TBT, CLS (lab) User experience + SEO
Accessibility ARIA, contrast, labels, focus Compliance + reach
Best Practices Security, modern APIs, console errors Maintainability
SEO Meta, titles, robots, structured data, mobile Direct ranking impact

Performance score weights (Lighthouse 10–13)

The Performance score is a weighted blend of five lab metrics — these weights have not changed since Lighthouse 10 (verified against the official scoring doc, 2026-08-23):

Metric Weight
Total Blocking Time (TBT) 30%
Largest Contentful Paint (LCP) 25%
Cumulative Layout Shift (CLS) 25%
First Contentful Paint (FCP) 10%
Speed Index (SI) 10%

Score bands: 90–100 green (good), 50–89 orange, 0–49 red. Note that INP is not part of the lab Performance score — it needs a real user interaction, so it surfaces only as field data (CrUX / PageSpeed Insights), not from a cold lab run.

Core Web Vitals thresholds ("good" measured at the 75th percentile)

Metric Good Needs improvement Poor
LCP — loading ≤ 2.5 s ≤ 4.0 s > 4.0 s
INP — interactivity ≤ 200 ms ≤ 500 ms > 500 ms
CLS — visual stability ≤ 0.1 ≤ 0.25 > 0.25

INP replaced FID as the responsiveness Core Web Vital on 12 March 2024; FID is fully retired. These are the thresholds the dashboard's mobile CWV panel is graded against.

Versions & tooling (verified 2026-08-23)

Package Current Notes
lighthouse 13.4.1 requires Node ≥ 22.19 for the full local runner
chrome-launcher 1.2.1 launches headless Chrome for the --full path
@lhci/cli 0.15.1 the maintained Lighthouse CI package (npm i -D @lhci/cli)
PageSpeed Insights API v5 https://www.googleapis.com/pagespeedonline/v5/runPagespeed — set PSI_API_KEY for higher quota

The PSI (default) path only needs Node 18+ (global fetch); the --full Chrome path pulls in lighthouse + chrome-launcher and therefore Node ≥ 22.19.

The Interactive Dashboard (right here)

Use the Site Selector below to pick a known site (e.g. kenyanschools.org or any of your deployed projects). Click Run Audit to simulate (or connect to) a fresh Lighthouse run. You'll see:

The implementation is a self-contained React component that matches the rest of the tech-stack portal (glass, fresh green accents, tilt cards). In a real setup you would wire the "Run" button to a server route that actually invokes lighthouse + your plugin.

Lighthouse Plugin System

Lighthouse is extensible. A plugin is just a small npm package that adds new audits and a new category to the report.

See the full official guide: https://github.com/GoogleChrome/lighthouse/blob/main/docs/plugins.md

Minimal plugin structure (copy-paste ready)

// lighthouse-plugin-kenyan-schools/plugin.js
export default {
  audits: [
    { path: 'lighthouse-plugin-kenyan-schools/audits/school-index-present.js' },
  ],
  category: {
    title: 'Kenyan Schools SEO',
    auditRefs: [{ id: 'school-index-present', weight: 1 }],
  },
};

Example custom audit (checks for KSO-XXXX):

// audits/school-index-present.js
import { Audit } from 'lighthouse';

class SchoolIndexPresent extends Audit {
  static get meta() {
    return {
      id: 'school-index-present',
      title: 'Page contains unique KSO school index',
      requiredArtifacts: ['MainDocumentContent'],
    };
  }
  static audit({ MainDocumentContent }) {
    const has = /KSO-\d{4}/i.test(MainDocumentContent);
    return { score: has ? 1 : 0, numericValue: has ? 1 : 0 };
  }
}
export default SchoolIndexPresent;

Usage (local dev):

npx lighthouse https://kenyanschools.org \
  --plugins=lighthouse-plugin-kenyan-schools \
  --only-categories=lighthouse-plugin-kenyan-schools,seo

Publish to npm as lighthouse-plugin-kenyan-schools and anyone can use it.

Pre-built Custom Audits (included)

The dashboard demonstrates these audits that ship with the example plugin:

Site Selector + Stats

The live module below lets you:

  1. Select a site from your portfolio (or type a custom URL)
  2. See the latest Lighthouse numbers
  3. "Re-run" to get fresh (demo) numbers

Connect the Run button to a real endpoint (the original internal run-audit.js + express server from the monorepo is a perfect starting point).

Live Dashboard (deployed)

This entry ships a live interactive dashboard, not a mock:

Run the same logic from the CLI: node lighthouse/examples/run-audit.js https://kenyanschools.org [--full].

Next.js / Vercel Integration Pattern

// .github/workflows/lighthouse.yml (example)
- name: Lighthouse
  uses: treosh/lighthouse-ci-action@v12
  with:
    urls: |
      https://kenyanschools.org
      https://kenyanschools.org/schools
    configPath: ./lighthouserc.json

lighthouserc.json can load your custom plugin.

Copy-Paste Templates

See the examples/ directory in this tech-stack entry for:

All files are ready to drop into any project.


Status: Fresh as of 2026-08-23 (lighthouse 13.4, @lhci/cli 0.15, PSI API v5). This entry ships both the measurement tool (dashboard) and the extensibility story (plugin + custom audits) that the rest of the CodeAmani stack relies on for performance gates.

Official docs: