Add blog: index, posts, and RSS feed - #21
Open
tdi wants to merge 14 commits into
Open
Conversation
Reactivating the disabled Astroship blog scaffolding, rebuilt to match the redesigned marketing site. Captures the v1 scope (text cards + RSS, covers and taxonomy deferred) before implementation.
Task-by-task plan to rebuild the blog: schema, seed post, layout/SEO, post + index pages, RSS feed, and nav/footer/sitemap wiring.
Removes verbatim triplication of the publish filter+sort across the index, post pages, and RSS feed.
Covers and category/tag display are deferred out of blog v1, so authors are not forced to populate those fields. getPublishedPosts() centralizes the publish filter and sort shared by the index, post pages, and RSS feed.
Gives the blog real end-to-end content: same-model failover routing when a primary SOTA provider degrades.
Lets blog posts declare og:type=article and exposes the feed to readers, with non-blog pages unchanged (default website type).
Drops the template's blue category header and cover markup for the site's Container, prose typography, and slate/purple tokens; passes ogType=article.
Replaces the redirect stub with real content-layer rendering (render(entry), entry.id), prerendered and filtered to published posts.
Lists published posts newest-first as text cards in the site style; removes the unused paginated route (no pagination in v1).
Publishes non-draft, non-future posts newest-first via @astrojs/rss.
Surfaces /blog in the header and footer navigation and stops excluding blog URLs from the generated sitemap.
Future-proofs the post route with a rest param, normalizes the post URL trailing slash on the index, drops a redundant Date wrap, and marks the decorative byline bullet aria-hidden.
|
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.
Summary
Re-activates and rebuilds the blog on top of the disabled Astroship scaffolding, restyled to match the current marketing site. v1 is intentionally lean: text cards + RSS, with covers and taxonomy deferred.
What's included
/blogindex — published posts newest-first as text cards (title, snippet,author • date), styled with the site'sContainer/Sectionheadand slate/purple tokens; graceful empty state./blog/<slug>posts — MDX rendered through a restyledBlogLayout(prose, Bricolage heading, back-to-blog link). Prerendered underoutput: "server"./rss.xml— feed via@astrojs/rss(new dependency), with a discovery<link>in the site head.getPublishedPosts()helper — single source of truth for the!draft && publishDate <= nowfilter + sort, consumed by the index, postgetStaticPaths, and RSS.Layoutgains an optionalogTypeprop → posts emitog:type=article; all other pages unchanged (website+ default OG image).image/category/tagsmade optional (kept for future use, not rendered in v1)./blog/un-excluded from the sitemap.Deferred (not in this PR)
Cover images, category/tag filter pages, pagination, author bio pages, related posts, reading time.
Verification
pnpm buildpasses; blog pages prerender todist/client/, RSS + sitemap include the post./blog,/blog/llm-router-failover,/rss.xmlall 200;og:type=articleon the post; nav + footer link to/blog.docs/superpowers/.Note: the repo's
CLAUDE.mdis stale (describes a Next.js app and apnpm lintscript that doesn't exist); this is actually an Astro site. Worth a follow-up cleanup.🤖 Generated with Claude Code