yap-blog/src/components/public
matt b7d473e7e5 Add RSS feed, sitemap, robots.txt, and search-engine metadata
A new "Site URL" setting (validated, trailing-slash-normalized, with
SITE_URL env fallback) anchors every absolute URL. On top of it:

- /feed.xml — RSS 2.0 with the 20 newest published posts: excerpt
  description, full sanitized HTML in content:encoded (relative image
  and link URLs rewritten to absolute, since readers resolve nothing),
  categories from tags, dc:creator, and a self atom:link. Autodiscovery
  <link> on every public page and a footer link.
- /sitemap.xml — home, post list, every published post and page
  (lastmod from updatedAt), and publicly visible tags. Rendered per
  request like the rest of the site so it never goes stale; drafts
  never appear.
- /robots.txt — allow all, disallow /admin/ and /api/, sitemap pointer.
  Admin pages also carry noindex meta as a second layer.
- Page metadata: metadataBase + canonical URLs everywhere, Open Graph
  (article type with published/modified times, author, and tags on
  posts; og:image + summary_large_image card when there's a featured
  image), and BlogPosting JSON-LD on post pages.

Gotcha encoded in lib/seo.ts: Next merges metadata shallowly, so pages
setting alternates.canonical alone would wipe the layout's RSS
autodiscovery entry — pageAlternates() always sets both.

Backups gain settings.siteUrl (export v4; older files still import).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 13:59:04 -04:00
..
CommentsSection.tsx Add moderated threaded comments 2026-07-04 21:08:08 -04:00
ContentBody.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
EmptyState.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
FeaturedImage.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
MobileMenu.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
NavLinkItem.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
PageArticle.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
PaginationNav.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
PostArticle.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
PostCard.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
PostListSection.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
SiteFooter.tsx Add RSS feed, sitemap, robots.txt, and search-engine metadata 2026-07-05 13:59:04 -04:00
SiteHeader.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
SiteSidebar.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00
TagChips.tsx Build yap-blog platform 2026-07-02 21:32:33 -04:00