feat(seo): Lighthouse benchmark gate + SEO/landing improvements#2
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 CIe2ejob enforce, on the landing page/:The
e2ejob now boots the stack detached, runs the Playwright suite in-container (exit-code gated), then runslhcion the runner against the published:3000, uploadinglighthouse-report. Reproduce locally withmake lighthouse.SEO / a11y work
/: anonymous visitors get real, crawlable content (h1, value prop,next/linkCTAs, 18+ disclosure) instead of a splash+redirect; authed users still get the game.metadataBase, canonical, Open Graph, Twitter, robots, title template β DRY offlib/site.ts.robots.ts,sitemap.ts, web manifest, generated favicon / apple-icon / OG image (next/og, no binaries), JSON-LDOrganization+WebSite, per-route/loginmetadata.lunatokens); generated favicon clears the Best-Practices 404.Verification
tests/e2e/seo.spec.ts)Docs:
docs/adr/0009-lighthouse-benchmark-gate.md,docs/ci.md.π€ Generated with Claude Code