feat(seo+geo): add Schema.org structured data#120
Conversation
Every public page now emits Open Graph and Twitter card tags (title, description, url, image) so links render branded previews on LinkedIn, Slack, WhatsApp and X. - Add a branded 1200x630 social card generated with next/og, served site-wide via app/opengraph-image and reused for app/twitter-image. - Add buildMetadata() helper that produces matching title/description/ canonical plus OG and Twitter card objects for each page. - Route home and auth pages through the helper; add OG/Twitter defaults to the root layout for inheritance. Refs #106
Footer links now resolve to real pages or anchors instead of placeholders that fell back to the homepage, and the previously missing contact and legal pages exist. - Footer: grouped Product/Company/Legal navigation with a real contact email, on-page anchors (#how-it-works, #faq), the parent company site, and links to the new pages. - Add /contact (indexable) with a real, monitored address. - Add /privacy and /terms minimal legal pages (noindex,follow). - Add SitePage shell for consistent standalone-page layout. Refs #112
Serve a robots.txt that allows public pages, blocks the API and gated admin/user areas, and points crawlers to the sitemap. Refs #107
Serve a sitemap.xml listing the public, indexable pages with last-modified, change frequency, and priority. The page list lives in a central publicRoutes constant so adding a public page updates the sitemap from one place; gated, admin, and API routes are excluded. Refs #108
Emit JSON-LD on every page so search and AI answer engines can identify the product, the organization behind it, and its offering. - Site-wide @graph (Organization, WebSite, SoftwareApplication) rendered from the root layout. - Organization mirrors Ajared coverage: legal name, two locations (Toronto, Abuja) with addresses and geo, contact point, and sameAs. - SoftwareApplication describes Retailytics with category, offer (free trial), and a feature list. - FAQPage emitted on the home page from the existing FAQ content. - BreadcrumbList on standalone pages via SitePage. Refs #109
|
Claude finished @prudentbird's task —— View job Schema.org Structured Data ReviewReview Tasks
🎯 Overall Assessment: HIGH QUALITYThis is a well-architected implementation of Schema.org structured data with excellent separation of concerns and proper cross-linking. The code follows modern React/Next.js patterns and provides comprehensive SEO coverage. ✅ StrengthsArchitecture & Design
Code Quality
SEO Implementation
|
Summary
Emits JSON-LD structured data so search engines and AI answer engines (ChatGPT, Perplexity, Google AI Overviews) can confidently identify the product, the organization, and the offering.
@graphrendered from the root layout:Organization+WebSite+SoftwareApplication(cross-linked via@id).PostalAddress+GeoCoordinates),ContactPoint(innovation@ajared.ca), logo, andsameAs(ajared.ng, ajared.ca, X, GitHub).BusinessApplication,Offer(free trial), and afeatureList./contact,/privacy,/termsviaSitePage.Implemented as plain builders in
src/lib/structured-data.ts+ a tinyJsonLdcomponent.Done when (issue #109)
Validation
npm run typecheck✅ /npm run build✅next start: home carries the@graph+FAQPage;/contactcarriesBreadcrumbList. (Schema.org validator run tracked by test(seo+geo): validate structured data and llms.txt coverage #114.)Notes
Stacked on #108 (targets
feat/seo-108-sitemap).Organization.logocurrently points at the generated OG image; swap for a dedicated square logo when one exists.Closes #109