Skip to content

SEO: win the name query - #16

Merged
nimkimi merged 15 commits into
mainfrom
seo/name-query
Aug 9, 2026
Merged

nimkimi merged 15 commits into
mainfrom
seo/name-query

Conversation

@nimkimi

@nimkimi nimkimi commented Aug 9, 2026 •

Copy link
Copy Markdown
Owner

What

Makes hackimi.dev competitive for the "Nima Hakimi" name query: recovers the dead-but-still-ranking /projects URL, name-led titles, a schema.org entity graph, a first-ever favicon + branded OG card, an honest sitemap, and Search Console wiring.

Workstreams

  1. Redirects — /projects (Google's current Redesign: design-forward developer portfolio with a signature monogram arrival #1 result for "Nima Hakimi developer", 404 since the June redesign) and /projects/* now 308 to /work; hackimi.vercel.app (exact host match — preview deployments untouched) 308s to the apex domain, closing the indexed-duplicate hole.
  2. Name-led metadata — the homepage <title> was literally "Portfolio" (the root segment never receives the layout's title template); it is now "Nima Hakimi — Developer & AI Engineer" as an absolute string. A site-wide footer adds one crawlable name line per page. The contact page no longer inherits the homepage OG object. Positioning wording changed in SEO surfaces only; visible copy is deliberately unchanged.
  3. Entity graph — the Person JSON-LD gains a stable @id and ORCID in sameAs; new WebSite (all pages), ProfilePage (/about), and BreadcrumbList (case studies) blocks reference that @id.
  4. Brand assets — favicon set (icon.svg + apple-icon.png) and a 1200×630 og.png built from the NH monogram, replacing a portrait photo declared with landscape dims. Both assets were reviewed and approved before merge. Regeneration script committed at scripts/generate-brand-assets.mjs.
  5. Sitemap honesty — entries are url-only (lastModified used to stamp "now" on every build — a false freshness signal; Google ignores changeFrequency/priority). The robots route-handler folder became the idiomatic robots.ts. The site URL is single-sourced from src/lib/site.ts.
  6. Search Console — conditional verification-token slot (an empty token emits no tag at all, and the test contract holds in both token states). docs/infra.md now records the out-of-repo domain/deploy state.

Verification

  • 318/318 unit/integration tests (32 files); 24/24 Playwright e2e against a production build (zero flake, first run); lint 0 errors / 0 warnings; Prettier clean.
  • New e2e/seo.spec.ts asserts at the rendered layer — redirect statuses, the exact homepage title, canonicals (root + child page), footer text, favicon links, og.png resolving 200, and per-page JSON-LD types — because the homepage-title bug proved object-level tests can be green while the resolved output is wrong.

Post-merge checklist (owner)

  1. Vercel → Settings → Domains: make hackimi.dev (apex) the primary domain so www 308s to apex, matching every code signal. Fill the flip date in docs/infra.md.
  2. Search Console: create the https://hackimi.dev URL-prefix property, paste the meta token into SITE_GOOGLE_SITE_VERIFICATION, submit /sitemap.xml, request indexing of /, /work, /projects.
  3. LinkedIn: add hackimi.dev under website/contact info; confirm public-profile visibility.
  4. GitHub profile: put https://hackimi.dev in the dedicated website field.
  5. Move the ROADMAP.md row to Done with the ship date.

(No manual deploy step: merging to main deploys automatically via the CI-gated GitHub Actions job — see docs/infra.md.)

@vercel

vercel Bot commented Aug 9, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hackimi Ready Ready Preview Aug 9, 2026 2:37pm

@nimkimi
nimkimi merged commit c6bcd8e into main Aug 9, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — d254996a Deployed Aug 9, 2026 by vercel[bot]
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