mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-24 16:26:32 +02:00
Some checks failed
Build and Push Docker Images / tag_release (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Has been cancelled
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Has been cancelled
- Added multiple new skills to skills-lock.json from the repository `aaron-he-zhu/seo-geo-claude-skills`. - Introduced `fuzzy-search` dependency in package.json for improved search functionality. - Updated pnpm-lock.yaml to include the new `fuzzy-search` package. - Enhanced SEO metadata across various pages, including canonical links and descriptions for better search visibility. - Improved layout and structure of several components, including the homepage and changelog, to enhance user experience.
61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import { loader } from "fumadocs-core/source";
|
|
import type { Metadata } from "next";
|
|
import { blog } from "@/.source/server";
|
|
import { BlogWithSearchMagazine } from "./blog-magazine";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Blog | SurfSense - AI Search & Knowledge Management",
|
|
description:
|
|
"Product updates, tutorials, and tips from the SurfSense team.",
|
|
alternates: {
|
|
canonical: "https://surfsense.com/blog",
|
|
},
|
|
};
|
|
|
|
const source = loader({
|
|
baseUrl: "/blog",
|
|
source: blog.toFumadocsSource(),
|
|
});
|
|
|
|
export interface BlogEntry {
|
|
title: string;
|
|
description: string;
|
|
date: string;
|
|
slug: string;
|
|
url: string;
|
|
image: string;
|
|
author: string;
|
|
authorAvatar: string;
|
|
}
|
|
|
|
export default async function BlogPage() {
|
|
const allPages = source.getPages() as Array<{
|
|
url: string;
|
|
slugs: string[];
|
|
data: {
|
|
title: string;
|
|
description: string;
|
|
date: string;
|
|
image?: string;
|
|
author?: string;
|
|
authorAvatar?: string;
|
|
};
|
|
}>;
|
|
|
|
const blogs: BlogEntry[] = allPages
|
|
.map((page) => ({
|
|
title: page.data.title,
|
|
description: page.data.description ?? "",
|
|
date: page.data.date,
|
|
slug: page.slugs.join("/"),
|
|
url: page.url,
|
|
image: page.data.image ?? "/og-image.png",
|
|
author: page.data.author ?? "SurfSense Team",
|
|
authorAvatar: page.data.authorAvatar ?? "/logo.png",
|
|
}))
|
|
.sort(
|
|
(a, b) => new Date(b.date).getTime() - new Date(a.date).getTime(),
|
|
);
|
|
|
|
return <BlogWithSearchMagazine blogs={blogs} />;
|
|
}
|