- Set up the brand website starter
- Create brand pages in Publive CMS
- Build reusable layout sections
- Register and render custom components
- Deploy your changes to production
Prerequisites
Before you begin, ensure you have completed onboarding and received:GitHub Repository Access - Clone access to your brand starter repo
Publive CMS Access - Login credentials to the CMS dashboard
Publisher Credentials - API keys and secrets for authentication
Environment Mapping - Branch-to-environment mapping (e.g.,
beta → staging, main → production)Deployment URL - Live URL where your site will be hosted
Step 1: Run the Starter Locally
Clone the Repository
Replace
pl-brand-starter with your actual repository name provided during onboarding.Install Dependencies
Configure Environment Variables
Copy the sample environment file:.env:
.env
Start Development Server
You now have a working brand website powered by Publive CMS data!
Step 2: Understand the Brand Page Model
Brand pages in Publive are built from layout sections - reusable building blocks that you can arrange in any order.Page Structure
Each brand page contains:Page-level information like title, slug, and SEO fields
Ordered list of section components that make up the page
Section Structure
Each layout section has:Unique identifier for the section type (e.g.,
hero-banner-image)Structured content fields specific to that section type
Rendering Flow
The website automatically:- Reads the
layoutarray from CMS - Finds the matching React component for each
schema_slug - Passes the section’s fields as props to the component
- Renders components in the specified order
Step 3: Create Your First Brand Page
In Publive CMS
Add Metadata
Fill in basic information:
- Title: Page title for SEO
- Slug: URL path (e.g.,
about-us) - Meta Description: SEO description
Your page will now render automatically on your website at the slug you specified!
Step 4: Add Sections to Your Page
Sections are reusable building blocks. Let’s create a hero banner section as an example.Define Section in CMS
Step 5: Build the Matching Component
Create a React component that matches the CMS fields exactly.Create Component File
components/sections/HeroBannerImage.tsx
Step 6: Register the Section
Map the section slug to your component in the configuration file.Update Configuration
publive.config.ts
HeroBannerImage component with those props.
Step 7: Create Custom Sections
Follow this workflow to build new sections from scratch:This loop is how brand websites scale. Each new section becomes a reusable building block.
Step 8: Validate Your Page
Before deploying, verify:Section Order
Section Order
✅ Sections render in the same order as the CMS layout array
Optional Fields
Optional Fields
✅ Optional fields don’t break rendering when empty
Images
Images
✅ Images load correctly with proper alt text ✅ Image optimization is working (Next.js Image component)
Links & Navigation
Links & Navigation
Draft vs Published
Draft vs Published
✅ Draft content only shows in preview mode ✅ Published content appears on live site
Step 9: Deploy Your Changes
Standard Deployment Workflow
Branch → Environment Mapping
Confirm your branch-to-environment mapping during onboarding:Common Section Patterns
Text Content Section
Image Gallery Section
Call-to-Action Section
Team Section
Best Practices
- Type Safety — Define TypeScript interfaces for all section props
- Prop Naming — Match CMS field names exactly in component props
- Optional Fields — Handle optional fields gracefully with conditional rendering
- Image Optimization — Always use Next.js Image component for automatic optimization
- Reusability — Design sections to be reusable across multiple pages
- Testing — Test all field variations (required, optional, empty states)
Troubleshooting
Section not rendering
Section not rendering
Possible causes:
schema_slugmismatch between CMS and config- Component not exported correctly
- Prop name mismatch between CMS fields and component
Images not loading
Images not loading
Possible causes:
- Image URL not accessible
- Missing Next.js Image domain configuration
next.config.js:Styling not applied
Styling not applied
Possible causes:
- CSS modules not imported
- Tailwind classes not generated
Support
Need help building your brand website?- Documentation: API Reference
- Support Email: support@publive.com
- Community: Publive Community Forum