feat(redesign): blog listing page#2207
Conversation
✅ Deploy Preview for expressjscom-preview ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
bjohansebas
left a comment
There was a problem hiding this comment.
I can't quite understand that text about partnerships.
Another thing: we have too many tags; we should start reducing them. We should keep vulnerabilities, announcements, and releases. cc: @UlisesGascon
Also, I would like that on the blog page we could reference other blogs, something like:
|
Okay, security and announcements tags are enough, confirmed with Ulises on Slack. The rest can be removed. |
|
Improvements I did:
About Related Posts, I've noted this for when I'll work on the post page. |
| .disable-transitions *, | ||
| .disable-transitions *::before, | ||
| .disable-transitions *::after { | ||
| transition: none !important; |
There was a problem hiding this comment.
see icons flashing issue: https://www.awesomescreenshot.com/video/50273460?key=fd1f8ad53d32bd5a995a856d2c96ad2e
There was a problem hiding this comment.
I see you've fixed it. Thanks!
…s.com into redesign-blog-listing
|
@ShubhamOulkar I've reviewed the layout on tablet, and it now displays two columns per row. |
This is happening while taking screen shots on awesomescreenshot and Firefox default Take screen shots. (Windows 11) |
There was a problem hiding this comment.
For reference, we’ll have OG images generated automatically, but that will be handled in a separate PR.
| </Container> | ||
| </Layout> | ||
|
|
||
| <script define:vars={{ PAGE_SIZE }} is:inline> |
There was a problem hiding this comment.
I think we should use pagination based on the URL rather than a script running in the browser, for SEO reasons and to make the URLs easier to share (for example https://astro.build/blog/2/ https://nodejs.org/en/blog/all/page/2, I like the way the URL is structured on the Astro website more.)
There was a problem hiding this comment.
To clarify, the filtering by tags should still run in the browser, but the pagination should be generated by static pages.
There was a problem hiding this comment.
Makes sense! I'll review this today. Thanks
There was a problem hiding this comment.
@bjohansebas can you please verify this is the expected behaviour? https://www.awesomescreenshot.com/video/50351892?key=96a5442b9e3ac4ef328e5147f8082420
I did not generate static pages for tags filtering, as you mentioned.
There was a problem hiding this comment.
Can you please check now @bjohansebas? ty
…into redesign-blog-listing
@bjohansebas I'm not covering the blog post page in this PR, so what you see is just a draft implementation to avoid broken links from the listing page. I will dedicate a PR to the blog post page. On that occasion, I will consider this feedback. TY! |
This is fixed now. Can you please double check? |
…eft/right arrow keys
| <FlexItem grow class="layout-content"> | ||
| <Flex direction="column" class="h-full"> | ||
| <main id="main-content"> | ||
| <main id="main-content" tabindex="-1"> |
There was a problem hiding this comment.
There was a problem hiding this comment.
@ShubhamOulkar Thanks for reporting. I noticed that the focus isn’t visible even when the sections inside the main element have a background set. It might be better to address this in a separate PR so we can test different scenarios and identify the best solution.















Preview
This PR implements the blog listing page as part of the site redesign, replacing the temporary placeholder with a fully functional layout.
New components
Avatar: displays author avatar, supports multiple authorsTag: renders a styled label/badgeTabs: accessible tab switcher with a customtabs-changeevent for client-side filteringPostCard: blog post card with cover image (it will be replaced with a generated OG image), tags, title, and author infoPageHead: section header with title and descriptionPagination: previous/next controls with page countBlog listing page (
/[lang]/blog)index.astrowith a dynamic[...page].astroTabscomponent, and paginated client-side (6 posts per page, we can change this value), all without a full page reloadgetStaticPaths, posts are currently provided for English onlyBlog post page (
/[lang]/blog/[slug])Content
blogcontent collection schema incontent.config.ts(title, description, authors, tags)Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.