pay
pay copied to clipboard
Payload starter by 9d8
9d8/pay
A modern, full-stack starter template powered by PayloadCMS and Next.js. Built with performance and developer experience in mind.
Need a version with user auth? Check out pay-auth
Features
- Next.js 15 with App Router
- PayloadCMS for content management
- PostgreSQL database with Neon
- AWS S3 for media storage
- Tailwind CSS & shadcn/ui for styling
- Responsive & Mobile-First design
- TypeScript for type safety
- brijr/craft utilities included
Prerequisites
Before you begin, ensure you have:
- Node.js (^18.20.2 or >=20.9.0)
- pnpm package manager
- PostgreSQL database (local or cloud)
- AWS S3 bucket for media storage
- Basic knowledge of TypeScript and React
Quick Start
- Clone and install dependencies:
git clone https://github.com/9d8dev/pay.git
cd pay
pnpm install
- Set up your environment:
cp .env.example .env
- Configure your
.envfile with:
# Database Configuration
DATABASE_URI=your_postgres_connection_string
PAYLOAD_SECRET=your_secure_secret_key
# S3 Configuration
S3_BUCKET=your_bucket_name
S3_REGION=your_bucket_region
S3_ACCESS_KEY_ID=your_access_key
S3_SECRET_ACCESS_KEY=your_secret_key
- Start the development server:
pnpm dev
- Visit http://localhost:3000/admin to create your first admin user
Detailed Setup Guide
Database Setup
-
Local PostgreSQL:
- Install PostgreSQL on your machine
- Create a new database
- Use the connection string:
postgresql://username:password@localhost:5432/database
-
Cloud PostgreSQL (Recommended):
- Create a database on Neon
- Copy the connection string from your dashboard
- Enable SSL mode with
?sslmode=require
AWS S3 Configuration (Guide)
-
Create an S3 bucket:
- Go to AWS Console > S3
- Create a new bucket
- Enable public access settings
- Configure CORS for your domain
-
Create IAM credentials:
- Create a new IAM user
- Attach
AmazonS3FullAccesspolicy - Save the access key and secret
-
Configure bucket policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
Development
Project Structure
pay/
├── src/
│ ├── app/ # Next.js app router
│ ├── collections/ # PayloadCMS collections
│ ├── components/ # React components
│ └── lib/ # Utility functions
├── public/ # Static assets
└── package.json # Dependencies
Key Commands
-
pnpm dev- Start development server -
pnpm build- Build for production -
pnpm start- Start production server -
pnpm generate:types- Generate PayloadCMS types
Deployment
Vercel Deployment
- Push your code to GitHub
- Import project to Vercel
- Configure environment variables
- Deploy!
Database Deployment
- Use PostgreSQL (We recommend Neon, or any other cloud provider with PostgreSQL support)
- Enable serverless pooling
- Configure connection pooling
Contributing
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Submit a pull request
Support
License
MIT 9d8