feat(seo): privacy-first profile indexability policy (#19) - #339
Open
rudra496 wants to merge 2 commits into
Open
feat(seo): privacy-first profile indexability policy (#19)#339rudra496 wants to merge 2 commits into
rudra496 wants to merge 2 commits into
Conversation
The sitemap enumerated every reputation handle and the profile pages server-rendered lifetime earnings next to real GitHub identities with no robots directives — one Google query away from tying a person to their income. Policy: profiles are noindex-by-default. sitemap.ts drops the reputation enumeration entirely (documented: re-add only behind an explicit opt-in flag, chunked via generateSitemaps and served from cache), the profile page sends robots noindex/follow via generateMetadata, and robots.ts stays deliberately permissive for /reputation since a disallow would just hide the noindex directive from crawlers. Route gains revalidate=3600 so crawler bursts stop hitting the backend per request.
Same one-liner as the Mindmint repair: ReturnType<typeof jest.fn>. next build currently dies at type-check for every fresh clone.
|
@rudra496 is attempting to deploy a commit to the chonilius' projects Team on Vercel. A member of the Team first needs to authorize it. |
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.
Fixes #19
The policy (and why)
/reputation/[handle]renders a real GitHub identity beside lifetime earnings. The sitemap enumerated every handle and the pages had no robots directives — a public, crawlable earnings directory tied to real names, with no per-user control. Since no opt-in flag exists in the backend today, the only defensible default is noindex-by-default: profiles stay out of search results entirely until an explicit public-profile field lands (flagged in the PR as the cross-repo follow-up; when it does, only opted-in handles should re-enter the sitemap, chunked and cached).What changed
sitemap.ts— drops the reputation enumeration; keeps public non-personal routes only. Gainsrevalidate = 3600so crawler bursts stop hitting the backend per request. Comment block documents the re-entry path (opt-in handles only,generateSitemaps()chunking well before the 50k/50MB limits).reputation/[handle]/page.tsx—generateMetadatanow sendsrobots: { index: false, follow: true }for existing profiles (links keep flowing so the bounty board's graph keeps value) and{ index: false, follow: false }on the not-found path.robots.ts— deliberately does NOT disallow/reputation: a disallow would prevent crawlers from reading the noindex directive while still letting the bare URL surface. Comment documents the reasoning.Bonus
next buildis currently broken on main — 42fc033 leftlogout: jest.fnused as a type (TS2749), killing type-check for every fresh clone. Same one-lineReturnType<typeof jest.fn>repair included so this leaves the repo buildable.Verification
npx jest: 259 passing / 7 failing — identical 7 to current main's pre-existing failures (WalletContext, ConnectPanel, NetworkBadge, Tabs, AuthContext, BountyCard suites; untouched here); +9 new tests all greennpx tsc --noEmit: cleannpm run build: succeeds