nextload
Next.js and Payload boilerplate with Better Auth, blog, cart, runtime theming and hybrid caching
Payload 3 starter with Better Auth, Postgres, S3 storage, a blog and composable layout and motion components
A Payload 3 and Next.js starter that wires up authentication through payload-auth and Better Auth, with a Postgres database and S3-compatible media storage. It includes Users, Blog, Media and Globals collections, SEO and import/export plugins, and custom content blocks. Styling uses Tailwind with layout and motion primitives. Requires PAYLOAD_SECRET and DATABASE_URI; email via Resend is optional, and a form builder plugin can be enabled.
A blank template to get started with Payload 3.0
This repository is a GitHub template: create your own copy of it in one click.
Create a repository from this templatePayload v4 development has moved to fluid-design-io/payload-toolkit. Follow the new repository for current documentation, issues and contributions.
A production-ready PayloadCMS starter with payload-auth, modern UI components, and full-stack development tools. Visit Demo
| Block | Description |
|---|---|
| Content Block | Allows you to create a content section with multiple columns that are mobile responsive. |
| Media Block | Refined version of Payload's default media block (added zoom functionality). |
| Gallery Block | A grid of zoomable images. |
| CopyRight Inline Block | An inline block that adds © Copyright ${fromYear}~${currentYear}... so you don't have to manually change it every year. |
| Component | Description |
|---|---|
| Section | A compound section primitive with composable header, content, and media. |
| Container | A focused horizontal width and gutter primitive. |
| MediaFrame | A compound figure primitive with content, overlay, and caption slots. |
| VimeoEmbed | An accessible Vimeo embed for public and unlisted videos. |
| Entrance | Composable viewport reveal, fade, and explicit stagger primitives. |
| TextEffect | Reduced-motion-aware animated text segmentation. |
| GlowEffect | Decorative glow effects with static reduced-motion behavior. |
import { Container, MediaFrame, Section } from '@/components/layout'
import { Entrance } from '@/components/motion-primitives'
export default function Page() {
return (
<Section variant="muted" layout="full-width">
<Container>
<Section.Header>
<Section.Eyebrow>Acme</Section.Eyebrow>
<Section.Title>Features</Section.Title>
<Section.Description>Composable layout and motion primitives.</Section.Description>
</Section.Header>
</Container>
<Entrance.Stagger>
<Entrance.Stagger.Item>
<Section.Media>
<MediaFrame>
<MediaFrame.Content>
<img src="/website-template-OG.png" alt="Feature preview" />
</MediaFrame.Content>
<MediaFrame.Caption>Feature preview</MediaFrame.Caption>
</MediaFrame>
</Section.Media>
</Entrance.Stagger.Item>
</Entrance.Stagger>
</Section>
)
}
git clone https://github.com/fluid-design-io/payload-better-auth-starter.git
cd payload-better-auth-starter
bun install
cp .env.example .env # edit with your values
bun run dev
The Compose stack uses SeaweedFS with the existing S3_* variables: S3 at
http://localhost:9001 and Admin UI at http://localhost:9002. Both buckets
are created at startup and remain private; Payload handles public media and
authenticated file access.
Migrating from MinIO: Back up the old volume and copy objects via the S3 API;
SeaweedFS uses a separate seaweedfs_data volume and does not migrate data automatically.
Replace Acme: logo in src/components/icons.tsx and admin-icon.tsx, favicon in public/favicon.ico, name in src/lib/constants.ts and src/lib/email/email-template.tsx, OG image public/website-template-OG.png.
Env (required): PAYLOAD_SECRET, DATABASE_URI. Optional: S3 vars, RESEND_API_KEY for email.
Collections: Users, Blog, Media, Globals. Plugins: Better Auth, SEO, Import/Export, S3, optional Form Builder. UI: coss, Motion, theme, responsive.
Payload form builder plugin with Tanstack form on the frontend
extra/plugins/form-plugin to src/plugins/extra/blocks/form to src/blocks/formextra/components/form to src/components/formextra/fields/slug to src/fields/slug@payloadcms/plugin-form-builder country-data-list react-circle-flagssrc/plugins/index.tsbun run payload generate:importmapsrc/ → app/, collections/, components/ (ui, layout, payload), lib/, plugins/, blocks/
Docker: docker-compose -f docker-compose.prod.yml up -d
MIT License - see LICENSE.md for details.
Need help? Check out the PayloadCMS docs or Better Auth docs.
Next.js and Payload boilerplate with Better Auth, blog, cart, runtime theming and hybrid caching
Next.js 16 and Payload starter with Clerk auth, Postgres, S3 media storage and Resend email
Next.js 16 and Payload 3 starter with PostgreSQL, role-based admin access, shadcn/ui and SEO helpers