https://github.com/rpuls/payload-3-boilerplate
Payload CMS V3 Boilerplate for Railway, by FUNKYTON
https://github.com/rpuls/payload-3-boilerplate
cms payload payloadcms railway railway-app
Last synced: about 1 month ago
JSON representation
Payload CMS V3 Boilerplate for Railway, by FUNKYTON
- Host: GitHub
- URL: https://github.com/rpuls/payload-3-boilerplate
- Owner: rpuls
- Created: 2024-11-25T21:49:24.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2026-05-13T21:07:48.000Z (about 2 months ago)
- Last Synced: 2026-05-13T23:13:42.742Z (about 2 months ago)
- Topics: cms, payload, payloadcms, railway, railway-app
- Language: TypeScript
- Homepage: https://funkyton.com/payload-cms/
- Size: 3.91 MB
- Stars: 31
- Watchers: 2
- Forks: 25
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
Payload CMS V3 Website Template
One-click deploy on Railway!
Need help?
Step by step guide and instructions
A powerful, flexible, and production-ready Payload CMS V3 website builder with PostgreSQL database.
## About this boilerplate
This boilerplate is a pre-configured, ready-to-deploy solution for Payload CMS as a website builder. It includes a fully-working backend, enterprise-grade admin panel, and a beautifully designed, production-ready website. This template is optimized for seamless deployment on [Railway](https://railway.app?referralCode=-Yg50p), and uses PostgreSQL for both local development and production environments.
## Version Info
- **Payload CMS**: `3.84.1`
- **Next.js**: `16.2.6`
- **Node.js**: `^18.20.2 || >=20.9.0`
## Preconfigured Features & Integrations
- **Authentication**: Robust user authentication system
- **Access Control**: Role-based access control for admins and users
- **Premium Content**: Gated content for authenticated users
- **Comments**: User commenting system with admin approval
- **Layout Builder**: Flexible content creation with pre-configured blocks
- **Draft Preview**: Preview unpublished content before going live
- **SEO**: Built-in SEO optimization tools
- **Redirects**: Easy management of URL redirects
- **PostgreSQL Support**: Configured for both local and production use
### Railway Setup
Use one-click deploy template:
[](https://railway.app/template/L8TUlT?referralCode=-Yg50p)
### Local Setup
1. Clone proejct: (recommeded) Laucnh on Railway and ejct [watch how](https://www.youtube.com/watch?v=LJFek8JP8TE). Alternatively clone this repo or fork it.
2. Copy `.env.example` to `.env` (fill in your own values..)
3. Start PostgreSQL: `docker compose up -d postgres`
4. Install dependencies: `pnpm install` or `npm install`
5. Run development mode: `pnpm dev` or `npm run dev`
or
6. Build the project: `pnpm build` or `npm run build`
7. Start the server: `pnpm start` or `npm run start`
### End-to-End Testing
The Playwright suite boots a fresh PostgreSQL container, builds the app from scratch, creates the first admin user through the onboarding UI, seeds the demo content, submits a public comment, approves it in the admin UI, and verifies it appears on the public post page.
Before the first run, make sure Docker Desktop is running. The suite starts a fresh PostgreSQL container automatically.
For test determinism, the e2e harness uses bundled local seed images only during the test run. Normal seeding continues to use the hosted seed images.
1. Install everything required for e2e: `corepack pnpm e2e:install`
2. Run the suite headlessly: `corepack pnpm test:e2e`
3. Run the suite with a visible browser: `corepack pnpm test:e2e:headed`
4. Run the suite slowly and keep the browser open for manual review: `corepack pnpm test:e2e:manual`
What `e2e:install` does:
- Installs project dependencies
- Rebuilds native dependencies used by the app on Windows, including `sharp` and `esbuild`
- Downloads the Chromium browser used by Playwright
If you prefer `npm`, you can run:
1. `npm run e2e:install`
2. `npm run test:e2e`
3. `npm run test:e2e:headed`
4. `npm run test:e2e:manual`
`test:e2e:manual` runs the suite in headed mode with a visible slowdown between actions and pauses only at the end of the happy path. While paused, the browser stays open so you can click around and manually inspect seeded content, the admin area, and public pages. When you are done, resume or stop the Playwright session from the inspector/terminal.
### Requirements
- **Database**: PostgreSQL
- **Node.js**: Compatible version as specified in `package.json`
## Useful Resources
- **Blog post about this template**: [Read here](https://funkyton.com/payload-cms/)
- **Official Payload Documentation**: [Read here](https://payloadcms.com/docs)