From 8b1487e7439d47d5cb45b703a9268bd970f7524e Mon Sep 17 00:00:00 2001 From: Oleg Proskurin Date: Wed, 21 Jan 2026 19:19:18 +0700 Subject: [PATCH] feat: improve blog --- .../src/app/(landings)/blog/[slug]/page.tsx | 39 +++++++++++++++++-- .../(landings)/blog/_components/BlogImage.tsx | 2 + .../blog/_components/BlogShareButtons.tsx | 8 ++-- apps/landing/src/app/(landings)/blog/page.tsx | 4 +- apps/landing/src/app/(landings)/blog/utils.ts | 2 + apps/landing/src/app/(landings)/layout.tsx | 8 ++++ 6 files changed, 55 insertions(+), 8 deletions(-) diff --git a/apps/landing/src/app/(landings)/blog/[slug]/page.tsx b/apps/landing/src/app/(landings)/blog/[slug]/page.tsx index 8b59b01..8044825 100644 --- a/apps/landing/src/app/(landings)/blog/[slug]/page.tsx +++ b/apps/landing/src/app/(landings)/blog/[slug]/page.tsx @@ -12,6 +12,33 @@ import { BlogSidebar, BlogShareButtons, } from '../_components'; +import type { BlogPost } from '../types'; + +const generateJsonLd = (post: BlogPost) => ({ + '@context': 'https://schema.org', + '@type': 'Article', + headline: post.title, + description: post.description, + image: `https://banatie.app${post.heroImage}`, + datePublished: post.date, + dateModified: post.date, + author: { + '@type': 'Person', + name: post.author.name, + }, + publisher: { + '@type': 'Organization', + name: 'Banatie', + logo: { + '@type': 'ImageObject', + url: 'https://banatie.app/banatie-logo.png', + }, + }, + mainEntityOfPage: { + '@type': 'WebPage', + '@id': `https://banatie.app/blog/${post.slug}/`, + }, +}); interface PageProps { params: Promise<{ slug: string }>; @@ -41,8 +68,13 @@ export default async function BlogPostPage({ params }: PageProps) { const relatedArticles = getPostsBySlugs(post.relatedArticles); return ( -
- + <> +