Static Content
BIAB's marketing content system lets you define multi-page, multi-locale, multi-language content in the dashboard and serve it through the SDK. Your site renders exactly what you configure — no redeploys needed when copy changes.
Marketing Pages (Schema-Driven)
The recommended approach. Define pages with a schema in your dashboard, then fetch them as structured bundles:
import { defineSiteMarketingSchema, section } from '@biab-dev/sdk'
// Define the page schema (in your biab.config.ts or setup)
export default defineSiteMarketingSchema({
pages: {
home: {
hero: section('hero', { title: true, subtitle: true, cta: true }),
features: section('features', { repeatable: true, fields: { title: true, description: true, icon: true } }),
},
about: {
content: section('rich-text'),
team: section('team', { repeatable: true, fields: { name: true, role: true, photo: true } }),
},
},
})
Then fetch and render on your site:
const bundle = await biab.marketing.getPageBundle({ pageKey: 'home', locale: 'en' })
// bundle.hero → { title, subtitle, cta }
// bundle.features → [{ title, description, icon }, ...]
Schema CLI
Sync your schema and content changes from the dashboard without a full deploy:
npx biab-dev sync-schema
npx biab-dev sync-content
React Hooks
import { useMarketingPageBundle, useMarketingSection } from '@biab-dev/sdk/react'
function HomePage() {
const bundle = useMarketingPageBundle({ pageKey: 'home', locale: 'en' })
const hero = useMarketingSection(bundle, 'hero')
// ...
}
Legacy Marketing Pages (0.7)
For accounts on the 0.7 content model:
const page = await client.site(siteId).marketingPages.get('home')
// page.title, page.sections, page.seo, ...
const pages = await client.site(siteId).marketingPages.list()
SEO Metadata
Every marketing page carries SEO metadata you can render into <head>:
import { useMarketingPageSeo } from '@biab-dev/sdk/react'
function PageHead() {
const seo = useMarketingPageSeo({ pageKey: 'home' })
return (
<>
<title>{seo.title}</title>
<meta name="description" content={seo.description} />
<meta name="og:title" content={seo.ogTitle} />
<meta name="og:image" content={seo.ogImage} />
</>
)
}
Parallel Pages (Programmatic SEO)
Generate pages at scale from structured data — ideal for location pages, service area pages, or any template-driven SEO strategy:
import { defineParallelPage } from '@biab-dev/sdk'
// Define the page template in your dashboard
const pageDef = defineParallelPage({
template: 'location',
fields: ['city', 'state', 'service'],
})
// List all rendered variants
const variants = await client.site(siteId).parallelPages.listVariants('location')
// → [{ slug: '/plumbing/portland-or', title: 'Plumbing Portland OR', ... }, ...]
// Render on demand
const html = await client.site(siteId).parallelPages.render('location', 'portland-or')
These automatically generate sitemap entries so search engines discover every variant.