Payload CMS Boilerplate
Modern, production-ready CMS starter built with Payload CMS 3.84.1 and Next.js 16.
Features
- Modern UI/UX β Tailwind CSS, Radix UI, shadcn/ui primitives
- Responsive Design β Mobile-first layout with header/footer components
- Dark/Light Mode β CSS variable-based theme system
- Rich Text Editor β Lexical-powered rich text with React renderer
- Media Management β Image & video field components with S3 / Vercel Blob storage adapters
- SEO Module β
buildMetadata,mergeOpenGraph, JSON-LD generators,robots.ts,sitemap.ts - Official Payload Plugins β SEO, Redirects, Live Preview, Payload Cloud
- Forms β react-hook-form + Zod validation
- Vercel Analytics β Built-in with zero config
- GraphQL API β Endpoint + Playground included
- TypeScript β Strict typing throughout
Technologies
| Technology | Version | Description |
|---|---|---|
| Next.js | 16.2.4 | React framework |
| Payload CMS | 3.84.1 | Headless CMS |
| Tailwind CSS | 3.4.17 | CSS framework |
| PostgreSQL | β | Database (via pg adapter) |
| TypeScript | 6.0.3 | Type safety |
| React | 19.2.5 | UI library |
| Zod | 4.x | Schema validation |
| react-hook-form | 7.x | Form handling |
Quick Start
1. Clone the Project
git clone https://github.com/Xjectro/payload-cms-boilerplate.git
cd payload-cms-boilerplate
2. Install Dependencies
npm install
# or
yarn install
# or
pnpm install
3. Environment Setup
Copy .env.example to .env and fill in the required variables:
cp .env.example .env
# Database Configuration
DATABASE_URL=postgres://postgres:<password>@127.0.0.1:5432/payload_cms_boilerplate
# Application Secrets
PAYLOAD_SECRET=YOUR_SECRET_HERE
# Site
APP_URL=http://localhost:3000
APP_TITLE=Your Site Name
# Environment Variables for Next.js
NEXT_PUBLIC_URL=${APP_URL}
NEXT_PUBLIC_TITLE=${APP_TITLE}
4. Database Setup
# Run database migrations
npm run payload migrate
5. Seed the Database (optional)
npm run seed
6. Start the Development Server
npm run dev
Open http://localhost:3000 in your browser.
Project Structure
payload-cms-boilerplate/
βββ src/
β βββ app/
β β βββ (payload)/
β β β βββ admin/
β β β β βββ [[...segments]]/
β β β β β βββ not-found.tsx
β β β β β βββ page.tsx
β β β β βββ importMap.js
β β β βββ api/
β β β β βββ [...slug]/
β β β β β βββ route.ts
β β β β βββ graphql/
β β β β β βββ route.ts
β β β β βββ graphql-playground/
β β β β βββ route.ts
β β β βββ custom.scss
β β β βββ layout.tsx
β β βββ (public)/
β β β βββ layout.tsx
β β β βββ page.tsx
β β β βββ template.tsx
β β βββ robots.ts
β β βββ sitemap.ts
β βββ collections/
β β βββ Media/
β β β βββ index.ts
β β βββ Users/
β β βββ index.ts
β βββ features/
β β βββ example/
β β βββ components/
β β βββ hooks/
β β βββ utils/
β βββ payload/
β β βββ components/
β β β βββ fields/
β β β β βββ media/
β β β β βββ image-media/
β β β β β βββ index.tsx
β β β β βββ video-media/
β β β β β βββ index.tsx
β β β β βββ index.tsx
β β β β βββ types.ts
β β β βββ rich-text.tsx
β β βββ utils/
β β β βββ payload-hooks/
β β β βββ access.ts
β β βββ payload.config.ts
β β βββ payload-types.ts
β β βββ seed.ts
β βββ shared/
β β βββ lib/
β β β βββ utils.ts
β β βββ providers/
β β β βββ client-provider.tsx
β β β βββ server-provider.tsx
β β βββ seo/
β β β βββ components/
β β β β βββ home-structured-data.tsx
β β β βββ utils/
β β β β βββ json-ld/
β β β β β βββ article.ts
β β β β β βββ breadcrumb.ts
β β β β β βββ event.ts
β β β β β βββ faq.ts
β β β β β βββ helpers.ts
β β β β β βββ how-to.ts
β β β β β βββ index.ts
β β β β β βββ item-list.ts
β β β β β βββ local-business.ts
β β β β β βββ organization.ts
β β β β β βββ person.ts
β β β β β βββ product.ts
β β β β β βββ types.ts
β β β β β βββ video.ts
β β β β β βββ webpage.ts
β β β β β βββ website.ts
β β β β βββ metadata.ts
β β β β βββ open-graph.ts
β β β βββ index.ts
β β βββ ui/
β β βββ layout/
β β β βββ header.tsx
β β β βββ footer.tsx
β β βββ primitives/
β β β βββ alert.tsx
β β β βββ badge.tsx
β β β βββ button.tsx
β β β βββ checkbox.tsx
β β β βββ form.tsx
β β β βββ input.tsx
β β β βββ label.tsx
β β βββ react/
β β βββ design-system.tsx
β βββ styles/
β β βββ globals.css
β β βββ themes.css
β βββ css.d.ts
βββ public/
β βββ favicon.ico
β βββ opengraph-image.webp
βββ .env.example
βββ .prettierrc.json
βββ components.json
βββ eslint.config.mjs
βββ next-env.d.ts
βββ next.config.ts
βββ package.json
βββ postcss.config.mjs
βββ tailwind.config.ts
βββ tsconfig.json
Available Commands
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run start |
Start production server |
npm run lint |
Check code quality |
npm run format |
Format code with Prettier |
npm run seed |
Seed the database |
npm run payload |
Payload CLI (migrate, generateβ¦) |
SEO Module
The SEO module lives in src/shared/seo/ and is ready to use out of the box:
buildMetadataβ generatesMetadataobjects for Next.js pagesmergeOpenGraphβ merges Open Graph tags with site defaults- JSON-LD generators β Article, BreadcrumbList, Event, FAQ, HowTo, ItemList, LocalBusiness, Organization, Person, Product, VideoObject, WebPage, WebSite
HomeStructuredDataβ drop-in component for the home pagerobots.ts/sitemap.tsβ auto-generated at build time
Storage Adapters
Two storage adapters are pre-installed and can be activated in payload.config.ts:
- AWS S3 β
@payloadcms/storage-s3 - Vercel Blob β
@payloadcms/storage-vercel-blob
API Endpoints
| Endpoint | Description |
|---|---|
/api/graphql |
GraphQL API |
/api/graphql-playground |
GraphQL Playground |
/admin |
Payload Admin Panel |
Deployment
Vercel
vercel deploy
Or connect the GitHub repository in the Vercel dashboard for automatic deploys on push.
Set all environment variables from .env.example in your Vercel project settings before deploying.
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Support
- Website: https://xjectro.com
- GitHub Issues: Issues page
- Payload CMS Docs: payloadcms.com/docs
License
MIT β see the LICENSE file for details.
Made with love by Xjectro