- 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)
Next Steps
Component Library
Explore pre-built section components
Styling Guide
Learn styling best practices for sections
SEO Optimization
Optimize your brand pages for search engines
Performance
Performance optimization techniques
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