Skip to content

feat(seo): Lighthouse benchmark gate + SEO/landing improvements#2

Merged
mitekk merged 1 commit into
mainfrom
seo/lighthouse-benchmark-gate
Jun 11, 2026
Merged

feat(seo): Lighthouse benchmark gate + SEO/landing improvements#2
mitekk merged 1 commit into
mainfrom
seo/lighthouse-benchmark-gate

Conversation

@mitekk

@mitekk mitekk commented Jun 11, 2026

Copy link
Copy Markdown
Owner

What & why

poker_land had no benchmark β€” the term maps to the Lighthouse "benchmark gate" the convention-template sibling (mitekk/pool-stars) runs in CI. This adds that gate and the SEO/accessibility work needed to pass it. The home page was also an SEO dead end (anonymous / showed an invisible splash, then JS-redirected to /login).

The gate (matches pool-stars)

.lighthouserc.json + the CI e2e job enforce, on the landing page /:

Category Level Min
SEO error 0.95
Accessibility error 0.95
Best-Practices error 0.90
Performance warn 0.70

The e2e job now boots the stack detached, runs the Playwright suite in-container (exit-code gated), then runs lhci on the runner against the published :3000, uploading lighthouse-report. Reproduce locally with make lighthouse.

SEO / a11y work

  • Public landing on /: anonymous visitors get real, crawlable content (h1, value prop, next/link CTAs, 18+ disclosure) instead of a splash+redirect; authed users still get the game.
  • Metadata: metadataBase, canonical, Open Graph, Twitter, robots, title template β€” DRY off lib/site.ts.
  • Crawlability: robots.ts, sitemap.ts, web manifest, generated favicon / apple-icon / OG image (next/og, no binaries), JSON-LD Organization+WebSite, per-route /login metadata.
  • Accessibility/BP: raised low-opacity text to WCAG AA (+ fixed two undefined luna tokens); generated favicon clears the Best-Practices 404.

Verification

  • βœ… build / lint / typecheck clean
  • βœ… 22/22 Playwright tests (incl. new tests/e2e/seo.spec.ts)
  • βœ… Lighthouse SEO 100 Β· Accessibility 100 Β· Best-Practices 100 Β· Performance 100

Docs: docs/adr/0009-lighthouse-benchmark-gate.md, docs/ci.md.

Note: NEXT_PUBLIC_SITE_URL defaults to http://localhost:3000 (threaded as a Docker build arg) β€” set the real domain in production for canonical/OG/sitemap.

πŸ€– Generated with Claude Code

Adds the Lighthouse "benchmark gate" (mirroring the mitekk/pool-stars
convention template) and the SEO/accessibility work needed to pass it.

Gate (.lighthouserc.json, CI e2e job): SEO/Accessibility hard-fail < 0.95,
Best-Practices < 0.90; Performance is a warning < 0.70. The e2e job boots the
stack, runs the Playwright suite in-container (exit-code gated), then runs lhci
on the runner against the published :3000 and uploads lighthouse-report.

SEO surface: expanded root metadata (metadataBase, canonical, OG, Twitter,
robots, title template), robots.ts, sitemap.ts, web manifest, generated
icon/apple-icon/OG image via next/og, JSON-LD Organization+WebSite, per-route
/login metadata β€” all DRY off lib/site.ts (NEXT_PUBLIC_SITE_URL, threaded as a
Docker build arg).

Home page: anonymous / now renders a real crawlable landing (h1, value prop,
next/link CTAs, 18+ disclosure) instead of an invisible splash + JS redirect;
authed users still get the game.

Accessibility/BP: raised low-opacity text to WCAG AA on the landing + login
(fixed two undefined luna tokens); the generated favicon clears the BP 404.

Docs: ADR-0009, docs/ci.md, `make lighthouse`. New tests/e2e/seo.spec.ts guards
the crawlability files + the anonymous landing CTA.

Verified locally: build/lint/typecheck clean; 22/22 Playwright tests pass;
Lighthouse SEO/A11y/Best-Practices/Performance = 100.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mitekk mitekk merged commit 19ec341 into main Jun 11, 2026
2 checks passed
@mitekk mitekk deleted the seo/lighthouse-benchmark-gate branch June 11, 2026 09:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant