Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/blog/2023-11-21-ai-assistant.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Nx Docs AI Assistant
slug: 'nx-docs-ai-assistant'
authors: [Katerina Skroumpelou]
cover_image: '/blog/images/2023-11-21/featured_img.avif'
tags: [nx, docs, AI]
tags: [nx, docs, ai]
description: Explore the Nx Docs AI Assistant's architecture, user benefits, and how it enhances documentation accessibility through intelligent search and contextual responses.
---

Expand Down
2 changes: 1 addition & 1 deletion docs/blog/2025-02-17-monorepos-are-ai-future-proof.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: 'Nx Just Made Your LLM Way Smarter'
slug: nx-just-made-your-llm-smarter
authors: ['Juri Strumpflohner']
tags: ['nx']
tags: ['nx', 'ai']
description: 'Learn how monorepos with Nx enhance AI capabilities by providing rich metadata and context, making LLMs smarter and more architecturally aware.'
cover_image: /blog/images/articles/monorepos-are-ai-future-proof-bg.jpg
youtubeUrl: https://youtu.be/RNilYmJJzdk
Expand Down
2 changes: 1 addition & 1 deletion docs/blog/2025-03-06-making-cursor-smarter.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: 'Making Cursor Smarter with an MCP Server For Nx Monorepos'
slug: nx-made-cursor-smarter
authors: ['Juri Strumpflohner', 'Max Kless']
tags: ['nx']
tags: ['nx', 'ai']
cover_image: /blog/images/articles/cursor-nx-mcp-heroimg.jpg
description: 'Learn how Nx enhances Cursor IDE with a dedicated MCP server, providing AI assistants with rich monorepo metadata for smarter code assistance.'
youtubeUrl: https://youtu.be/V2W94Sq_v6A
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: 'In this webinar, Nx CTO Victor Savkin and Senior Engineer Max Kles
date: 2025-03-06
slug: 'are-monorepos-the-answer-to-better-aiassisted-development'
authors: ['Victor Savkin', 'Max Kless']
tags: [webinar]
tags: [webinar, ai]
cover_image: /blog/images/2025-03-19/March-2025-Webinar-card.avif
time: 1pm EDT/5pm UTC
status: Past - Gated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: 'In this webinar, Nx CTO Victor Savkin and Senior Engineer Max Kles
date: 2025-04-16
slug: 'are-monorepos-the-answer-to-better-aiassisted-development'
authors: ['Victor Savkin', 'Max Kless']
tags: [webinar]
tags: [webinar, ai]
cover_image: /blog/images/2025-04-30/April-2025-Webinar-Card.avif
time: 10:30am ET/2:30pm UTC
status: Past - Gated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "What's the Point of Generating All This Code If You Can't Merge It?"
slug: 'pr-review-is-the-bottleneck'
authors: ['Victor Savkin']
tags: [nx, nx-cloud, self-healing]
tags: [nx, nx-cloud, self-healing, ai]
cover_image: /blog/images/articles/self-healing-pr-bottleneck-hero-img.avif
description: "AI speeds up code authoring, but PR validation becomes the bottleneck. Learn how Nx's Self-Healing CI automatically fixes broken PRs to keep teams moving."
pinned: true
Expand Down
2 changes: 1 addition & 1 deletion docs/blog/2025-10-14-whats-new-in-nx-self-healing-ci.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "What's New in Nx Self-Healing CI"
slug: 'whats-new-in-nx-self-healing-ci'
authors: ['Juri Strumpflohner']
tags: [nx, nx-cloud, self-healing]
tags: [nx, nx-cloud, self-healing, ai]
cover_image: /blog/images/articles/self-healing-ci-update-blog-hero.avif
description: 'Enhanced GitHub integration, interactive diffs, fine-grained task control, auto-apply fixes, and local fix application—discover the latest improvements to Nx Self-Healing CI.'
pinned: true
Expand Down
31 changes: 13 additions & 18 deletions nx-dev/ui-blog/src/lib/blog-container.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,11 @@ export function BlogContainer({ blogPosts, tags }: BlogContainerProps) {
const firstFive = sortFirstFivePosts(filteredList);
setFirstFiveBlogs(firstFive);

// Get the remaining blogs, sorted by date (unpinned posts after the first 5)
const firstFiveSlugs = new Set(firstFive.map((post) => post.slug));
const remaining = filteredList
.filter((post) => !firstFiveSlugs.has(post.slug))
.sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf());
setRemainingBlogs(remaining);
// Get all blogs, sorted by date
const allBlogs = filteredList.sort(
(a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf()
);
setRemainingBlogs(allBlogs);
}

useEffect(() => updateBlogPosts(), [filteredList]);
Expand Down Expand Up @@ -102,7 +101,7 @@ export function BlogContainer({ blogPosts, tags }: BlogContainerProps) {
{!!remainingBlogs.length && (
<>
<div className="mx-auto mb-8 mt-20 flex items-center justify-between border-b-2 border-slate-300 pb-3 text-sm dark:border-slate-700">
<h2 className="font-semibold">More blogs</h2>
<h2 className="font-semibold">All blogs</h2>
<div className="flex gap-2">
<Link
href="/blog/rss.xml"
Expand Down Expand Up @@ -135,14 +134,13 @@ function initializeFilters(
const filterBy = searchParams.get('filterBy');

const firstFive = sortFirstFivePosts(blogPosts);
const firstFiveSlugs = new Set(firstFive.map((post) => post.slug));
const remaining = blogPosts
.filter((post) => !firstFiveSlugs.has(post.slug))
.sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf());
const allBlogs = blogPosts.sort(
(a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf()
);

const defaultState = {
initialFirstFive: firstFive,
initialRest: remaining,
initialRest: allBlogs,
initialSelectedFilterHeading: 'All Blogs',
initialSelectedFilter: 'All',
};
Expand All @@ -156,16 +154,13 @@ function initializeFilters(
const initialFilter = ALL_TOPICS.find((filter) => filter.value === filterBy);

const filteredFirstFive = sortFirstFivePosts(result);
const filteredFirstFiveSlugs = new Set(
filteredFirstFive.map((post) => post.slug)
const filteredAllBlogs = result.sort(
(a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf()
);
const filteredRemaining = result
.filter((post) => !filteredFirstFiveSlugs.has(post.slug))
.sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf());

return {
initialFirstFive: filteredFirstFive,
initialRest: filteredRemaining,
initialRest: filteredAllBlogs,
initialSelectedFilterHeading: initialFilter?.heading || 'All Blogs',
initialSelectedFilter: initialFilter?.value || 'All',
};
Expand Down
4 changes: 1 addition & 3 deletions nx-dev/ui-blog/src/lib/more-blogs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ export function MoreBlogs({ blogs }: MoreBlogsProps) {
year: 'numeric',
}
);
const tags = post.tags.map(
(tag) => `${tag.substring(0, 1).toUpperCase()}${tag.substring(1)}`
);
const tags = post.tags;
return (
<Link
href={`/blog/${post.slug}`}
Expand Down
16 changes: 11 additions & 5 deletions nx-dev/ui-blog/src/lib/topics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type { FC, SVGProps } from 'react';
import {
ComputerDesktopIcon,
BookOpenIcon,
MicrophoneIcon,
SparklesIcon,
CubeIcon,
AcademicCapIcon,
ChatBubbleOvalLeftEllipsisIcon,
Expand Down Expand Up @@ -36,11 +36,17 @@ export const ALL_TOPICS: Topic[] = [
value: 'webinar',
heading: 'Webinars',
},
// {
// label: 'Podcasts',
// icon: MicrophoneIcon,
// value: 'podcast',
// heading: 'Podcasts',
// },
{
label: 'Podcasts',
icon: MicrophoneIcon,
value: 'podcast',
heading: 'Podcasts',
label: 'AI',
icon: SparklesIcon,
value: 'ai',
heading: 'AI',
},
{
label: 'Releases',
Expand Down
Loading