Skip to content

feat(seo): complete the discoverability baseline of the public demo - #13

Merged
Nain9Dev merged 1 commit into
mainfrom
feat/seo-baseline
Nov 9, 2026
Merged

Nain9Dev merged 1 commit into
mainfrom
feat/seo-baseline

Conversation

@Nain9Dev

@Nain9Dev Nain9Dev commented Nov 9, 2026

Copy link
Copy Markdown
Owner

What

Completes the discoverability baseline of parametricad.naindev.com. Already present and kept: canonical, description, Open Graph (served 1200x630 og-image.png), Twitter card, robots.txt, sitemap.xml. Added: a descriptive title ("ParametriCAD AI | Parametric CAD with Mesh Validation", 53 chars; it was just "ParametriCAD"), <link rel="author">, a SoftwareApplication JSON-LD block whose author is https://www.naindev.com/#person, and frontend/public/llms.txt. pwa.config.ts now keeps /robots.txt, /sitemap.xml and /llms.txt out of the service worker navigation fallback. Requirements REQ-UBI-20 and REQ-UBI-21, traceability rows and task TSK-41 added (the requirement numbers are provisional until merge). Page language is English (lang="en"), unchanged; no visual change.

Why

Search and answer engines had no structured data, no llms.txt and a one-word title. Without the denylist entry, an installed client opening /llms.txt would have been answered with the app shell. The JSON-LD block is data, so the strict CSP in vercel.json does not affect it.

Not changed: the static HTML has no <h1>. The only <h1> is rendered by React in AppHeader.tsx after the script runs; restructuring the app was out of scope.

Verification

  • frontend/src/test/seoBaseline.test.ts written first: 4 of 11 failed (title, author link, JSON-LD, llms.txt); after adding the service worker case and the fix, 12 of 12 pass.
  • npm test: 36 files, 279 tests passed. npm run lint, npm run typecheck, npm run build and npm run verify:pwa (23 files precached) pass; dist/ contains llms.txt.
  • Backend traceability gate still collects cleanly (pytest --collect-only, 356 tests).
  • gitleaks git --no-banner clean.

The page already had a canonical URL, a description, social tags, a
robots file and a sitemap. Add the missing pieces: a descriptive title
(53 characters instead of the bare product name), a rel=author link, a
SoftwareApplication JSON-LD block naming the author, and llms.txt.

Keep robots.txt, sitemap.xml and llms.txt out of the service worker's
navigation fallback so an installed client that opens one gets the file
and not the app shell.

Covered by src/test/seoBaseline.test.ts (REQ-UBI-20, REQ-UBI-21),
written first.
@vercel

vercel Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
parametricad-ai Ready Ready Preview Nov 9, 2026 10:14pm UTC

@Nain9Dev
Nain9Dev merged commit cbffcf1 into main Nov 9, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — 97a2a237 Deployed Nov 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