From 006c1b9b27e036d3985c538c13fd805de434bc13 Mon Sep 17 00:00:00 2001 From: Manish Kumar Date: Sat, 8 Aug 2026 20:26:35 +0530 Subject: [PATCH] feat: add 50 open source blog posts and author avatar support --- app/[slug]/page.tsx | 4 +- content/posts/README.md | 5 + .../best-new-open-source-launches-of-2026.md | 45 +++++++++ .../best-open-source-ai-ml-frameworks.md | 45 +++++++++ ...e-alternatives-to-popular-paid-software.md | 38 +++++++ .../posts/best-open-source-analytics-tools.md | 45 +++++++++ ...est-open-source-chat-communication-apps.md | 59 +++++++++++ .../posts/best-open-source-cms-platforms.md | 47 +++++++++ .../posts/best-open-source-crm-software.md | 53 ++++++++++ .../best-open-source-database-systems.md | 56 +++++++++++ .../posts/best-open-source-design-tools.md | 47 +++++++++ .../best-open-source-devops-ci-cd-tools.md | 67 +++++++++++++ ...en-source-directories-and-curated-lists.md | 29 ++++++ .../best-open-source-ecommerce-platforms.md | 51 ++++++++++ .../best-open-source-note-taking-apps.md | 47 +++++++++ ...st-open-source-project-management-tools.md | 57 +++++++++++ ...ce-projects-for-first-time-contributors.md | 57 +++++++++++ ...t-open-source-security-pentesting-tools.md | 51 ++++++++++ ...n-source-self-hosted-apps-for-home-labs.md | 55 ++++++++++ ...best-open-source-video-editing-software.md | 45 +++++++++ ...tforms-to-discover-open-source-projects.md | 36 +++++++ ...i-use-open-source-software-commercially.md | 28 ++++++ ...es-hiring-for-open-source-contributions.md | 55 ++++++++++ ...story-of-open-source-from-gnu-to-github.md | 31 ++++++ ...pen-source-boosts-your-developer-career.md | 48 +++++++++ ...ow-do-open-source-developers-make-money.md | 32 ++++++ .../posts/how-open-source-licensing-works.md | 59 +++++++++++ ...ers-discover-trending-open-source-repos.md | 29 ++++++ ...mmunity-around-your-open-source-project.md | 49 +++++++++ ...d-a-saas-business-on-top-of-open-source.md | 48 +++++++++ ...er-open-source-projects-by-license-type.md | 29 ++++++ ...ht-open-source-project-for-your-startup.md | 43 ++++++++ ...jects-by-programming-language-on-ossium.md | 35 +++++++ ...w-to-start-your-own-open-source-project.md | 51 ++++++++++ .../is-open-source-software-free-forever.md | 28 ++++++ .../is-open-source-software-safe-to-use.md | 34 +++++++ .../open-source-ai-projects-to-watch-2026.md | 45 +++++++++ .../open-source-business-models-explained.md | 60 +++++++++++ .../posts/open-source-maintainer-burnout.md | 49 +++++++++ .../open-source-software-for-startups.md | 39 ++++++++ ...pen-source-vs-free-software-vs-freeware.md | 35 +++++++ .../open-source-vs-proprietary-software.md | 41 ++++++++ content/posts/ossium-features-explained.md | 25 +++++ content/posts/ossium-vs-product-hunt.md | 43 ++++++++ ...osted-vs-cloud-hosted-open-source-tools.md | 47 +++++++++ content/posts/state-of-open-source-2026.md | 49 +++++++++ ...0-websites-to-find-open-source-software.md | 37 +++++++ ...ce-software-every-developer-should-know.md | 94 ++++++++++++++++++ ...ource-github-repositories-by-stars-2026.md | 39 ++++++++ ...pen-source-projects-trending-this-month.md | 45 +++++++++ .../posts/what-does-oss-mean-in-software.md | 30 ++++++ content/posts/what-is-open-source-software.md | 37 +++++++ ...anies-are-adopting-open-source-software.md | 43 ++++++++ lib/content/parse.test.ts | 8 ++ lib/content/parse.ts | 1 + lib/content/types.ts | 2 + public/logo/opencode-logo-dark.png | Bin 0 -> 2491 bytes 57 files changed, 2305 insertions(+), 2 deletions(-) create mode 100644 content/posts/best-new-open-source-launches-of-2026.md create mode 100644 content/posts/best-open-source-ai-ml-frameworks.md create mode 100644 content/posts/best-open-source-alternatives-to-popular-paid-software.md create mode 100644 content/posts/best-open-source-analytics-tools.md create mode 100644 content/posts/best-open-source-chat-communication-apps.md create mode 100644 content/posts/best-open-source-cms-platforms.md create mode 100644 content/posts/best-open-source-crm-software.md create mode 100644 content/posts/best-open-source-database-systems.md create mode 100644 content/posts/best-open-source-design-tools.md create mode 100644 content/posts/best-open-source-devops-ci-cd-tools.md create mode 100644 content/posts/best-open-source-directories-and-curated-lists.md create mode 100644 content/posts/best-open-source-ecommerce-platforms.md create mode 100644 content/posts/best-open-source-note-taking-apps.md create mode 100644 content/posts/best-open-source-project-management-tools.md create mode 100644 content/posts/best-open-source-projects-for-first-time-contributors.md create mode 100644 content/posts/best-open-source-security-pentesting-tools.md create mode 100644 content/posts/best-open-source-self-hosted-apps-for-home-labs.md create mode 100644 content/posts/best-open-source-video-editing-software.md create mode 100644 content/posts/best-platforms-to-discover-open-source-projects.md create mode 100644 content/posts/can-i-use-open-source-software-commercially.md create mode 100644 content/posts/companies-hiring-for-open-source-contributions.md create mode 100644 content/posts/history-of-open-source-from-gnu-to-github.md create mode 100644 content/posts/how-contributing-to-open-source-boosts-your-developer-career.md create mode 100644 content/posts/how-do-open-source-developers-make-money.md create mode 100644 content/posts/how-open-source-licensing-works.md create mode 100644 content/posts/how-ossium-helps-developers-discover-trending-open-source-repos.md create mode 100644 content/posts/how-to-build-a-community-around-your-open-source-project.md create mode 100644 content/posts/how-to-build-a-saas-business-on-top-of-open-source.md create mode 100644 content/posts/how-to-filter-open-source-projects-by-license-type.md create mode 100644 content/posts/how-to-find-the-right-open-source-project-for-your-startup.md create mode 100644 content/posts/how-to-search-open-source-projects-by-programming-language-on-ossium.md create mode 100644 content/posts/how-to-start-your-own-open-source-project.md create mode 100644 content/posts/is-open-source-software-free-forever.md create mode 100644 content/posts/is-open-source-software-safe-to-use.md create mode 100644 content/posts/open-source-ai-projects-to-watch-2026.md create mode 100644 content/posts/open-source-business-models-explained.md create mode 100644 content/posts/open-source-maintainer-burnout.md create mode 100644 content/posts/open-source-software-for-startups.md create mode 100644 content/posts/open-source-vs-free-software-vs-freeware.md create mode 100644 content/posts/open-source-vs-proprietary-software.md create mode 100644 content/posts/ossium-features-explained.md create mode 100644 content/posts/ossium-vs-product-hunt.md create mode 100644 content/posts/self-hosted-vs-cloud-hosted-open-source-tools.md create mode 100644 content/posts/state-of-open-source-2026.md create mode 100644 content/posts/top-10-websites-to-find-open-source-software.md create mode 100644 content/posts/top-50-open-source-software-every-developer-should-know.md create mode 100644 content/posts/top-open-source-github-repositories-by-stars-2026.md create mode 100644 content/posts/top-open-source-projects-trending-this-month.md create mode 100644 content/posts/what-does-oss-mean-in-software.md create mode 100644 content/posts/what-is-open-source-software.md create mode 100644 content/posts/why-companies-are-adopting-open-source-software.md create mode 100644 public/logo/opencode-logo-dark.png diff --git a/app/[slug]/page.tsx b/app/[slug]/page.tsx index bd1fbe6..4806b77 100644 --- a/app/[slug]/page.tsx +++ b/app/[slug]/page.tsx @@ -253,7 +253,7 @@ export default async function BlogPostPage({ params }: PageProps) { className="h-11 w-11 shrink-0 overflow-hidden rounded-full ring-1 ring-neutral-200 transition-colors hover:ring-neutral-400 dark:ring-neutral-800 dark:hover:ring-neutral-600" > {post.author} { expect(fm.tags).toEqual(["a", "b"]); expect(fm.keywords).toEqual(["solo"]); }); + + it("reads the avatar field and leaves it empty by default", () => { + expect( + toFrontmatter({ title: "T", avatar: "/logo/opencode-logo-dark.png" }, "t") + .avatar, + ).toBe("/logo/opencode-logo-dark.png"); + expect(toFrontmatter({ title: "T" }, "t").avatar).toBeUndefined(); + }); }); describe("estimateReadingTime", () => { diff --git a/lib/content/parse.ts b/lib/content/parse.ts index 2d61301..05a2c0f 100644 --- a/lib/content/parse.ts +++ b/lib/content/parse.ts @@ -118,6 +118,7 @@ export function toFrontmatter( updatedAt: data.updatedAt ? String(data.updatedAt) : undefined, author: String(data.author ?? "ossium"), authorUrl: data.authorUrl ? String(data.authorUrl) : "https://ossium.in", + avatar: data.avatar ? String(data.avatar) : undefined, featured: Boolean(data.featured), draft: Boolean(data.draft), image: data.image ? String(data.image) : undefined, diff --git a/lib/content/types.ts b/lib/content/types.ts index 17e9cbf..194f44b 100644 --- a/lib/content/types.ts +++ b/lib/content/types.ts @@ -25,6 +25,8 @@ export interface PostFrontmatter { updatedAt?: string; author: string; authorUrl?: string; + /** Author avatar image path (defaults to the ossium logo when absent) */ + avatar?: string; featured?: boolean; draft?: boolean; /** Optional cover image path or absolute URL */ diff --git a/public/logo/opencode-logo-dark.png b/public/logo/opencode-logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..cf868c8e8711cf9e79638e17fedb2ae483047b74 GIT binary patch literal 2491 zcmeAS@N?(olHy`uVBq!ia0y~yV0^&9z!bs31{B$~)KmaSaTa()7Beu2se&-0XOPMV zpde#$kh>GZx^prwfgF}}M_)$E)e-c@N8Uj3B978G?-(KG+*lfUXz+v)Y|HD2e zH|x30eIDdA3cai6oVzXioGC*?^j4T)ekGS^7Zyu4ggL$BRbea`>d-1bLfV&uy+VJa}#~nmtF0rP0!Q wkk(QgVvE-?GTb@EI2uEPG=@lT;xy`)Y70r;U*hxt*w$k3boFyt=akR{01ND8jQ{`u literal 0 HcmV?d00001