ZuploZuplo
LoginStart for Free
  • Documentation
  • API Reference
Introduction
Getting Started
    Develop using the Portal
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth4 - Deploy5 - Dynamic Rate LimitingMCP - Quick start
    Develop Locally
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth
Concepts
Development
Policies
Handlers
API Keys
MCP Server
MCP Gateway
AI Gateway
Developer Portal
    IntroductionLocal DevelopmentUpdating VersionsNode Modules & Customization
    Configuration
      Colors & ThemeDocumentationNavigationBranding & LayoutSearchFooterllms.txt
    Writing
    OpenAPI
    Authentication
    Integrations
    Guides
    Extending
    Components
Monetization
Deploying & Source Control
Observability
Networking & Infrastructure
Account Management
Programming API
Build with AI
Zuplo CLI
Migration Guides
Platform LimitsSecuritySupportTrust & ComplianceChangelog
powered by Zudoku
Configuration

Branding & Layout

We offer you to customize the main aspects of your Dev Portal site's appearance and behavior.

Branding

Title, logo can be configured in under the site property:

zudoku.config.tsx
const config = { site: { title: "My API Documentation", logo: { src: { light: "/path/to/light-logo.png", dark: "/path/to/dark-logo.png", }, alt: "Company Logo", href: "/", }, // Other options... }, };

Available Options

Title

Set the title of your site next to the logo in the header:

zudoku.config.tsx
{ site: { title: "My API Documentation", } }

Logo

Configure the site's logo with different versions for light and dark themes:

zudoku.config.tsx
{ site: { logo: { src: { light: "/light-logo.png", dark: "/dark-logo.png" }, alt: "Company Logo", width: "120px", // optional width href: "/", // optional link target (defaults to "/") reloadDocument: true, // optional, defaults to true } } }

The reloadDocument option controls whether clicking the logo triggers a full page reload (true, the default) or uses client-side SPA navigation (false). A full reload is useful when your landing page is served by a different system (e.g. a CMS) outside of Zudoku.

Direction (RTL/LTR)

Set the text direction for your site. This is useful for right-to-left languages:

zudoku.config.tsx
{ site: { dir: "rtl", // "ltr" (default) or "rtl" } }

Colors & Theme

We allow you to fully customize all colors, borders, etc - read more about it in Colors & Themes

Custom 404 Page

Replace the default "Page not found" page with your own component using the notFoundPage option:

zudoku.config.tsx
import { NotFound } from "./src/NotFound"; const config = { site: { notFoundPage: <NotFound />, }, };

Your component will be rendered whenever a user navigates to a route that doesn't exist. This works in both development and production builds.

Here's an example of a custom 404 component:

src/NotFound.tsx
import { Button, Link } from "zudoku/components"; export const NotFound = () => ( <section className="flex items-center justify-center py-20"> <div className="text-center max-w-lg mx-auto"> <p className="text-6xl font-extrabold text-primary mb-4">404</p> <h1 className="text-3xl font-bold mb-4">Page not found</h1> <p className="text-muted-foreground mb-8"> The page you're looking for doesn't exist or has been moved. </p> <Button asChild> <Link to="/">Go back home</Link> </Button> </div> </section> );

Layout

Banner

Add a banner message to the top of the page:

zudoku.config.tsx
{ site: { banner: { message: "Welcome to our beta documentation!", color: "info", // "note" | "tip" | "info" | "caution" | "danger" or custom dismissible: true } } }

Footer

The footer configuration has its own dedicated section. See the Footer Configuration for details.

Complete Example

Here's a comprehensive example showing all available page configuration options:

zudoku.config.tsx
{ site: { title: "My API Documentation", logo: { src: { light: "/images/logo-light.svg", dark: "/images/logo-dark.svg" }, alt: "Company Logo", width: "100px", }, notFoundPage: <NotFound />, banner: { message: "Welcome to our documentation!", color: "info", dismissible: true }, } }
Edit this page
Last modified on May 29, 2026
NavigationSearch
On this page
  • Branding
    • Available Options
  • Layout
    • Banner
    • Footer
  • Complete Example
React
React
React
React
React
React
React
React