Skip to content

Commit 74f250d

Browse files
authored
Merge pull request #270 from kagent-dev/peterj/blogpost-insidekagent
add blog post
2 parents 70e8387 + 8ea9653 commit 74f250d

File tree

9 files changed

+342
-99
lines changed

9 files changed

+342
-99
lines changed
117 KB
Loading

public/sitemap.xml

Lines changed: 98 additions & 98 deletions
Large diffs are not rendered by default.

src/app/blog/[slug]/page.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ export default async function Page({
4040
.filter((author: Author | undefined): author is Author => author !== undefined);
4141
}
4242
return <div className="container mx-auto px-4 py-8">
43+
{/* Add JSON-LD structured data if present in metadata */}
44+
{metadata?.jsonLd && (
45+
<script
46+
type="application/ld+json"
47+
dangerouslySetInnerHTML={{
48+
__html: JSON.stringify(metadata.jsonLd).replace(/</g, '\\u003c'),
49+
}}
50+
/>
51+
)}
4352
<div className="mb-8">
4453
<Link href="/blog" className="text-primary hover:underline inline-flex items-center">
4554
<span aria-hidden="true" className="mr-1"></span> Back to Blog

src/app/blog/authors.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ export const authors: Author[] = [
3535
photo: "/images/authors/jetchiang.jpg",
3636
bio: "Jet is an aspiring machine learning engineer + researcher studying at the University of Toronto. He is the Linux Foundation Mentee at Kagent for 2025.",
3737
},
38+
{
39+
id: "michaellevan",
40+
name: "Michael Levan",
41+
title: "Principal Solutions Engineer",
42+
photo: "/images/authors/michaellevan.jpeg",
43+
bio: "Michael Levan translates technical complexity into practical value. He's a seasoned engineer, consultant, trainer, and content creator in the Kubernetes and Agentic space. Michael is a Microsoft MVP (Azure), 4x published author, podcast host, international public speaker, CNCF Ambassador, and was part of the Kubernetes v1.28 and v1.31 Release Team.",
44+
},
3845
];
3946

4047
export const getAuthorById = (id: string): Author | undefined => {

src/app/blog/page.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ const posts = [
6363
title: 'From MCP Servers to Services: Introducing kmcp for Enterprise-Grade MCP Development',
6464
description: 'Discover kmcp, the lightweight toolkit that takes MCP servers from prototype to production. Learn how to scaffold, build, and deploy enterprise-grade MCP services to Kubernetes in minutes—no Dockerfiles or complex manifests required. Includes demo video and complete getting started guide.',
6565
authorId: "christianposta",
66+
},
67+
{
68+
slug: 'inside-kagent-oss-ent-ai-meshes',
69+
publishDate: '2025-11-18',
70+
title: 'Inside Kagent: Architecting Open Source and Enterprise AI Agent Meshes for 2026',
71+
description: 'Learn how to architect open source and enterprise AI agent meshes for 2026.',
72+
authorId: "michaellevan",
6673
}
6774
]
6875

src/app/layout.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { Metadata } from "next";
44
import { ThemeProvider } from "@/components/theme-provider";
55
import Footer from "@/components/footer";
66
import Navbar from "@/components/navbar";
7-
import KubeConAnnouncementBar from "@/components/kubecon-announcement-bar";
87
import { GoogleTagManager } from "@next/third-parties/google";
98
import Script from "next/script";
109
import '@docsearch/css';

src/blogContent/inside-kagent-oss-ent-ai-meshes.mdx

Lines changed: 170 additions & 0 deletions
Large diffs are not rendered by default.

src/components/mdx/aside.tsx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import React from 'react';
2+
import { Info, AlertTriangle, Lightbulb, AlertCircle } from 'lucide-react';
3+
4+
interface AsideProps {
5+
type?: 'info' | 'warning' | 'tip' | 'danger';
6+
children: React.ReactNode;
7+
}
8+
9+
const asideStyles = {
10+
info: {
11+
container: 'bg-blue-50 dark:bg-blue-950/30 border-blue-200 dark:border-blue-800',
12+
icon: 'text-blue-600 dark:text-blue-400',
13+
IconComponent: Info,
14+
},
15+
warning: {
16+
container: 'bg-yellow-50 dark:bg-yellow-950/30 border-yellow-200 dark:border-yellow-800',
17+
icon: 'text-yellow-600 dark:text-yellow-400',
18+
IconComponent: AlertTriangle,
19+
},
20+
tip: {
21+
container: 'bg-green-50 dark:bg-green-950/30 border-green-200 dark:border-green-800',
22+
icon: 'text-green-600 dark:text-green-400',
23+
IconComponent: Lightbulb,
24+
},
25+
danger: {
26+
container: 'bg-red-50 dark:bg-red-950/30 border-red-200 dark:border-red-800',
27+
icon: 'text-red-600 dark:text-red-400',
28+
IconComponent: AlertCircle,
29+
},
30+
};
31+
32+
export function Aside({ type = 'info', children }: AsideProps) {
33+
const style = asideStyles[type];
34+
const IconComponent = style.IconComponent;
35+
36+
return (
37+
<aside className={`my-6 rounded-lg border-l-4 p-4 ${style.container}`}>
38+
<div className="flex gap-3 items-center">
39+
<div className="flex-shrink-0">
40+
<IconComponent className={`h-5 w-5 ${style.icon}`} />
41+
</div>
42+
<div className="flex-1 leading-7 text-muted-foreground">
43+
{children}
44+
</div>
45+
</div>
46+
</aside>
47+
);
48+
}
49+

src/mdx-components.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Tabs } from "./components/mdx/tabs";
55
import SmartLink from "./components/mdx/smart-link";
66
import { CodeBlock } from "./components/mdx/code-block";
77
import { LabCTA } from "./components/mdx/lab-cta";
8+
import { Aside } from "./components/mdx/aside";
89
import Image from "next/image";
910
import { generateAnchorId } from "@/lib/utils";
1011

@@ -179,6 +180,7 @@ export function useMDXComponents(components: MDXComponents): MDXComponents {
179180
Tabs,
180181
YouTube,
181182
LabCTA,
183+
Aside,
182184
...components,
183185
}),
184186
[components]

0 commit comments

Comments
 (0)