-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Export plugin data getters for SSG use cases
Problem
Currently, plugin data fetching is tightly coupled to React Query via query-keys.ts. Users building statically generated sites (SSG) need direct data access for:
getStaticPaths/generateStaticParams- to enumerate all slugs at build timegetStaticProps/ page-level data loading - to fetch content without React Query
Proposed Solution
Export simple async data getter functions from each plugin's API export:
// @btst/stack/plugins/blog/api
export async function getAllPosts(db: Database): Promise<Post[]>
export async function getPostBySlug(db: Database, slug: string): Promise<Post | null>
export async function getAllTags(db: Database): Promise<Tag[]>
// @btst/stack/plugins/cms/api
export async function getAllPages(db: Database): Promise<Page[]>
export async function getPageBySlug(db: Database, slug: string): Promise<Page | null>Example Usage
// app/blog/[slug]/page.tsx (Next.js App Router)
import { getAllPosts, getPostBySlug } from "@btst/stack/plugins/blog/api";
import { db } from "@/lib/db";
export async function generateStaticParams() {
const posts = await getAllPosts(db);
return posts.map((post) => ({ slug: post.slug }));
}
export default async function PostPage({ params }: { params: { slug: string } }) {
const post = await getPostBySlug(db, params.slug);
// ...
}Plugins to Update
-
blog- posts, tags -
cms- pages -
ai-chat- conversations (if applicable) -
form-builder- forms, submissions
Metadata
Metadata
Assignees
Labels
No labels