From e21c4674890a6f4b33d5623c19957b0741cde572 Mon Sep 17 00:00:00 2001 From: Dominik Koch Date: Mon, 21 Jul 2025 23:18:07 +0200 Subject: feat: add opencut blog --- apps/web/src/app/blog/page.tsx | 98 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 apps/web/src/app/blog/page.tsx (limited to 'apps/web/src/app/blog/page.tsx') diff --git a/apps/web/src/app/blog/page.tsx b/apps/web/src/app/blog/page.tsx new file mode 100644 index 00000000..ca553a67 --- /dev/null +++ b/apps/web/src/app/blog/page.tsx @@ -0,0 +1,98 @@ +import { Metadata } from "next"; +import { Header } from "@/components/header"; +import { Card, CardContent } from "@/components/ui/card"; +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import Link from "next/link"; +import { getPosts } from "@/lib/blog-query"; +import Image from "next/image"; + +export const metadata: Metadata = { + title: "Blog - OpenCut", + description: + "Read the latest news and updates about OpenCut, the free and open-source video editor.", + openGraph: { + title: "Blog - OpenCut", + description: + "Read the latest news and updates about OpenCut, the free and open-source video editor.", + type: "website", + }, +}; + +export default async function BlogPage() { + const data = await getPosts(); + if (!data || !data.posts) return
No posts yet
; + + return ( +
+
+ +
+
+
+
+
+ +
+
+

+ Blog +

+

+ Read the latest news and updates about OpenCut, the free and + open-source video editor. +

+
+
+ {data.posts.map((post) => ( + + + {post.coverImage && ( +
+ {post.title} +
+ )} + + + {post.authors && post.authors.length > 0 && ( +
+ {post.authors.map((author, index) => ( +
+ + + + {author.name.charAt(0).toUpperCase()} + + + + {author.name} + + {index < post.authors.length - 1 && ( + • + )} +
+ ))} +
+ )} +

{post.title}

+

{post.description}

+
+
+ + ))} +
+
+
+
+ ); +} -- cgit v1.3.1