Skip to content

seo: strengthen Dev Ledger search positioning - #83

Merged
Aliferous3 merged 4 commits into
mainfrom
seo/search-positioning-1
Oct 19, 2026
Merged

Aliferous3 merged 4 commits into
mainfrom
seo/search-positioning-1

Conversation

@Aliferous3

@Aliferous3 Aliferous3 commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Summary

SEO-1 for the public app repo — consolidates what the homepage claims before more content ships. Search acquisition is currently near zero (≈1 visitor each from Google and DuckDuckGo in the last 30 days); the homepage's <title> was the vague "Dev Ledger — Code Metrics", which owns no category. Companion PR: Aliferous3/dev-ledger-site#7 carries the intent map, code-churn clarification, and internal-link clusters this PR follows.

Homepage positioning

  • <title>: Dev Ledger — Code Metrics → Dev Ledger — Open-Source GitHub Analytics for Developers (57 chars, fits within practical limits, owns the category)
  • Meta description → "Open-source GitHub analytics for developers — commits, source growth, churn, languages, activity, projects, and releases across your repositories. Read-only." — describes the shipped product; no productivity scoring, monitoring, ownership, or ranking claims
  • og:title/og:description/Twitter equivalents updated in lockstep

Structured data

New JSON-LD @graph on the homepage reusing the publishing layer's identity scheme:

  • WebApplication @id: https://devledger.site/#app — name, url, applicationCategory: DeveloperApplication, operatingSystem: Web browser, isAccessibleForFree: true, license (AGPL-3.0), codeRepository/sameAs → https://github.com/Aliferous3/dev-ledger, and a featureList naming only shipped capabilities (mirrors the publishing repo's applicationEntity())
  • WebSite @id: https://devledger.site/#website — name/url + publisher → #app; the app entity links back via isPartOf

No fabricated ratings, reviews, user counts, pricing, or org claims.

Visible copy (minimal — design preserved)

  • Login surface tagline: "Your GitHub history, made legible." → "Open-source GitHub analytics — your development history, made legible."
  • Trust-link row gains one crawlable link to /tools/github-analytics (joins the existing /security and /blog links) — homepage → authority flow without a link farm

Notes

  • WebApplication is used rather than the generic SoftwareApplication because the publishing layer already identifies the product entity that way — this reuses the identity scheme instead of creating a parallel one
  • Canonical (https://devledger.site/), robots (index,follow), OG image metadata unchanged
  • Two test-harness commits rode along after the PR opened:
    • test/security.test.mjs allowlists the exact public repo URL https://github.com/Aliferous3/dev-ledger — required by the new sameAs/codeRepository JSON-LD — while still rejecting fixture-era Aliferous3/ identifiers elsewhere in dist artifacts
    • test/ownership-accumulate.test.mjs masks UUID values before its serialized-state substring scan — the a1 needle was a ~1-in-8 false positive against random scope/lease UUIDs (pre-existing flake in the merged B2 test; assertion-only change, no runtime touch)

Test plan

  • npm test — 686 pass / 0 fail / 3 pre-existing credential-gated skips; launch-metadata.test.mjs updated for the new title and extended with a JSON-LD contract test (parses, stable @ids, sameAs, license, no fabricated claims)
  • npm run typecheck — clean
  • npm run build — clean; dist/index.html verified to carry the new title + JSON-LD
  • npm audit --audit-level=moderate — 0 vulnerabilities
  • npm run db:drill — pass on local PostgreSQL 17 (unchanged surface)
  • production untouched; no ownership work touched

Generated with Devin

Retitle the public homepage from the vague "Code Metrics" frame to the
product category — open-source GitHub analytics for developers — and
rewrite the meta description around what the app actually reads
(commits, source growth, churn, languages, activity, projects,
releases). Add a JSON-LD entity graph reusing the publishing layer's
identity scheme: WebApplication at https://devledger.site/#app with
license, repository, and shipped-feature claims only, plus a WebSite
node linking the site entity to the application.

The login surface gets two minimal copy changes for category clarity:
the tagline now names the category, and the quiet trust-link row gains
a crawlable link to the canonical GitHub analytics tool page.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@vercel

vercel Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
dev-ledger Ready Ready Preview Oct 19, 2026 8:14pm UTC

The JSON-LD entity graph links codeRepository/sameAs to the public
source repo, whose path trips the Aliferous3/ fixture-identifier guard.
The guard's intent is private repo paths; mask only the known public
repo URL so everything else still fails closed.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
The assertion scans serialized history_cursor for provider-identity
substrings including 'a1' (the fixture login). Server-minted ids inside
that blob — scope_id and lease tokens — are random UUIDs, and a hex uuid
contains the pair 'a1' about one run in eight, so the check was flaky on
CI. Mask UUID-shaped values first; the identity needles still fail on
any real leak.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Schema.org `publisher` expects an Organization or Person; the graph
declares neither, so publishing the WebApplication was invalid. Use
`about` — which accepts any Thing — to link #website to #app without
inventing an Organization.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@Aliferous3
Aliferous3 merged commit 4129c2e into main Oct 19, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — e62c2bbc Deployed Oct 19, 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