Now with AI-powered page building via MCP Server

Workspace Branding

Manage workspace branding assets (logo, favicon, brand name, Open Graph image) and fetch them in your Next.js app with fetchSiteConfig.

Last updated: July 14, 2026

Overview

cmssy is headless — your Next.js app owns all visual styling (colors, typography, dark mode) as standard Tailwind/CSS in your own repo. What cmssy stores per workspace is branding: a brand name and shared assets you fetch and apply in your site.


Workspace Branding

Branding lives on the workspace site config. Fetch it with fetchSiteConfig from @cmssy/react:

import { fetchSiteConfig } from "@cmssy/react";
import { cmssy } from "@/cmssy.config";

const { branding } = await fetchSiteConfig(cmssy);
// { brandName, logoUrl, faviconUrl, ogImageUrl } | null
FieldWhat it isWhere to use
brandNameDisplay name of the site / brand.Page title, metadata, header
logoUrlLogo asset URL.Render in your header or footer
faviconUrlFavicon asset URL.Wire into your metadata icons
ogImageUrlDefault Open Graph / social-share image.Default OG image for pages without a custom image

Every field is nullable — render only what is set. buildCmssyMetadata already applies branding for SEO: brandName as a title fallback and ogImageUrl as the default Open Graph / Twitter image.

Using branding in your app

Favicon:

import { fetchSiteConfig } from "@cmssy/react";
import { cmssy } from "@/cmssy.config";

export async function generateMetadata() {
  const { branding } = await fetchSiteConfig(cmssy);
  return branding?.faviconUrl ? { icons: { icon: branding.faviconUrl } } : {};
}

Logo in header:

import { fetchSiteConfig } from "@cmssy/react";
import { cmssy } from "@/cmssy.config";

export default async function Header() {
  const { branding } = await fetchSiteConfig(cmssy);
  return (
    <header>
      {branding?.logoUrl && <img src={branding.logoUrl} alt={branding.brandName} />}
      <h1>{branding?.brandName || 'My Site'}</h1>
    </header>
  );
}