diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md index 6024c27..511a3e1 100644 --- a/CONTRIBUTION.md +++ b/CONTRIBUTION.md @@ -85,7 +85,7 @@ The kagent website includes a blog section where we post about kagent. If you'd - Posts should focus on the open source kagent project and not vendor specific projects or products - Any submitted blog posts must be original content and not a copy of existing blog posts -### Submitting a blog post +### Writing a new blog post on kagent 1. Create your blog post in `src/blogContent` folder. You can copy an existing blog post and modify it. 2. Make sure you add the following metadata at the top of your blog post - update the title, published date, description, author, and authorIds accordingly. @@ -124,6 +124,10 @@ If you need to add a new author, you can do that in the [authors.ts file](https: 4. All images can be added to the public/images folder. +### Adding an existing blog post + +To add an existing blog post, you can add a new entry into the `external-blog-posts.yaml` file. Same guidelines as above apply. + ## Style Guide - Follow the existing code style diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index 30a91c7..ee0be0b 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -1,6 +1,13 @@ import { Background } from "@/components/background"; import Link from "next/link"; import React from "react"; +import externalPostsData from "@/data/external-blog-posts.yaml"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { getAuthorById, type Author } from "./authors"; +import { DISCORD_LINK, GITHUB_LINK } from "@/data/links"; +import Discord from "@/components/icons/discord"; +import Github from "@/components/icons/github"; function shortDate(date: string) { return new Date(date).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); @@ -12,33 +19,61 @@ const posts = [ publishDate: '2025-09-09', title: "Truly Reactive Cloud Native AI Agents with Kagent and Khook", description: "Khook makes Kagent Agents Reactive", + authorId: "antweiss", }, { slug: 'ai-reliability-aire', publishDate: '2025-05-14', title: 'AI Reliability Engineering For More Dependable Humans', description: 'AI Reliability Engineering (AIRE) brings AI agents to SRE and Platform Engineering workflows for dependable humans.', + authorId: "christianposta", }, { slug: 'kgateway-guardrails', publishDate: '2025-05-19', title: 'Adding Guardrails to kagent with kgateway AI Gateway', description: 'Adding guardrails, observability, and security to Agent to LLM communication with an AI gateway like kgateway', + authorId: "christianposta", }, { slug: 'kagent-celebrating-100-days', publishDate: '2025-07-01', title: 'Celebrating 100 Days of Kagent', description: '100+ contributors, 1000+ GitHub stars and more!', + authorId: "linsun", }, { slug: 'kmcp', publishDate: '2025-07-30', title: 'From MCP Servers to Services: Introducing kmcp for Enterprise-Grade MCP Development', 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.', + authorId: "christianposta", } ] +type InternalPostCombined = { + title: string; + description: string; + publishDate: string; + href: string; + isExternal: false; + slug: string; + author: Author | null; +} + +type ExternalPostCombined = { + title: string; + description: string; + publishDate: string; + href: string; + isExternal: true; + author: string; // Keep as string for external posts since they're not in our authors.ts +} + +type CombinedPost = InternalPostCombined | ExternalPostCombined; + +type ExternalYamlPost = { title: string; description: string; publishDate: string; url: string; author: string }; + export default async function BlogPage() { return ( <> @@ -47,20 +82,81 @@ export default async function BlogPage() {
{post.description}
+ {post.isExternal ? ( + + Read the post + + ) : ( + + Read the post + + )}{post.description}
- - Read the post + )); + })()} ++ Connect with other developers, share your experiences, and get support from the kagent community. +
+