feat(seo): add sitemap.xml#119
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
|
Claude finished @prudentbird's task —— View job Code Review Complete ✅Review Checklist:
📋 Review SummaryOverall, this is a clean and well-structured implementation of sitemap generation for SEO purposes. The code follows Next.js 14+ conventions and demonstrates good architectural decisions. ✅ Strengths
🔍 Code Quality & Best Practicesfrontend/src/app/sitemap.ts:5-6
frontend/src/lib/site.ts:35-49
|
Summary
Adds a generated
sitemap.xml(src/app/sitemap.ts) so search engines have a formal list of pages.lastModified,changeFrequency, andpriority.publicRoutesconstant insrc/lib/site.ts— adding a public page updates the sitemap from one place./admin,/user), API, andnoindexpages (auth,/terms,/privacy) are excluded.Done when (issue #108)
sitemap.xmllists every public page with last-modified and priority.publicRouteslist).Validation
npm run typecheck✅npm run build✅ —/sitemap.xmlroute generated.Notes
Stacked on #107 (targets
feat/seo-107-robots-txt).noindexlegal/auth pages are intentionally omitted (listing non-indexable URLs in a sitemap is discouraged).robots.txtfrom #107 already references this sitemap.Closes #108