Release v0.2.0: SEO and discoverability#17
Merged
Merged
Conversation
Add a registry-driven Open Graph / Twitter card renderer so the homepage and each tool page get a distinct, on-brand 1200x630 image instead of all sharing one generic root card. - lib/og.tsx: shared renderer that embeds the bundled subset Noto Sans for crisp text; accent colour and copy come from each tool's registry entry - one opengraph-image route per tool, plus a rewritten homepage card - sanitize glyphs absent from the font subset (the arrow in "Image → URI" becomes "Image to URI") Next mirrors each file image to twitter:image automatically. The images prerender as static PNGs at build time.
Add schema.org structured data and fill metadata gaps so search and AI
crawlers can understand the site and each tool.
- lib/jsonLd.ts (new): one home for all JSON-LD builders, each derived from
the TOOLS registry so it can't drift from what renders.
- FAQPage from the registry FAQs (the FAQs were already written but nothing
emitted them); gated to pages that actually render an FAQ section
- Organization + WebSite + ItemList @graph on the homepage, linked by @id
- BreadcrumbList on tool pages (Home > Tool)
- toolJsonLd (SoftwareApplication) moved here from lib/toolMetadata.ts
- ToolPageLayout: emit the three JSON-LD blocks and render a real visible
Home > Tool breadcrumb (so the schema represents visible content). The
heroBreadcrumb tagline sits outside the <nav> so it isn't announced as a
crumb, and the current crumb uses --fg to clear WCAG AA contrast.
- Homepage: canonical, inheriting the root OpenGraph rather than clobbering it.
- Root metadata: OpenGraph locale/title/description and twitter:site.
- Per-tool OpenGraph gains siteName + locale.
Deliberately skipped: SearchAction/sitelinks searchbox (no site search;
deprecated in 2024), and any aggregateRating (no honest ratings to claim).
All JSON-LD verified as valid against the rendered HTML. build, lint, and
27 tests pass.
Add a "Star on GitHub" control to the header (compact) and footer (labelled), so the open-source repo is one click from every page. - components/shared/GitHubStars.tsx: an async server component that fetches the repo's star count from the GitHub API with revalidate 3600 (hit at most once an hour, well under the unauthenticated limit) plus a 3s timeout. Any failure degrades to just the link, so a GitHub outage never breaks a page, and the count never reaches the browser. - Inlined GitHub mark SVG (lucide's brand icon is deprecated); amber Star icon. - lib/tools.ts: GITHUB_REPO / GITHUB_REPO_URL constants. The aria-label mirrors the visible abbreviated count and pluralizes; formatStars is consistent across the 1k/10k boundaries.
Give the repo a proper front page: - badge row: live site, license, CI, GitHub stars, last commit, made-by - a hero image and a 2x2 gallery of the four tools, each linking to the live tool, reusing the generated per-page Open Graph cards (committed under .github/assets/) - a table of contents, and a live link on every tool in the Tools section - refreshed Stack / Add a tool / Deploy notes to cover the OG renderer, the JSON-LD builders, and the GITHUB_REPO constant Every tool description was checked against the code.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
A discoverability release: every page now has a proper social card and structured data, the open-source repo is one click from any page, and the README is a real front page.
Highlights
og:imageandtwitter:image.locale/title/description, per-toolsiteName/locale, andtwitter:site.Notes
Each change was researched or adversarially reviewed before merge; build, lint, and the 27 unit tests pass on the integrated branch.