Dynamic website with CMS for managing church content.
- Dynamic Mass Schedule - Manage regular and special mass times
- Photo Gallery - Upload and manage gallery photos
- Social Media Links - Manage social media connections
- Lite CMS Admin Panel - Easy content management at
/admin
- Node.js 18+
- PostgreSQL database
- Docker (optional, for local database)
- S3-compatible storage (Supabase Storage, AWS S3, or MinIO)
To configure S3 storage:
- Go to your Supabase project dashboard
- Navigate to Storage > Settings
- Find your S3 credentials (URL, project ref, access key, secret key)
Or use AWS S3 directly:
- Create an S3 bucket
- Generate IAM credentials with appropriate permissions
npm installCopy the example environment file and update the values:
cp .env.example .env
Edit .env with your configuration:
DATABASE_URL- PostgreSQL connection stringSESSION_SECRET- Secret key for session encryptionADMIN_PASSWORD- Password for admin panel access
Option A: Docker (Recommended for local development)
docker-compose up -dOption B: External PostgreSQL
Update DATABASE_URL in .env with your PostgreSQL connection string.
# Generate Prisma client
npm run db:generate
# Push schema to database
npm run db:push
# Seed with default data (optional)
npm run db:seednpm run devVisit:
- Website: http://localhost:3000
- CMS Admin: http://localhost:3000/admin
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run start |
Start production server |
npm run db:generate |
Generate Prisma client |
npm run db:push |
Push schema to database |
npm run db:seed |
Seed database with sample data |
npm run db:studio |
Open Prisma Studio |
- Push code to GitHub
- Import project in Vercel
- Add environment variables:
DATABASE_URLSESSION_SECRETADMIN_PASSWORDS3_URLS3_PROJECT_REFS3_ACCESS_KEYS3_SECRET_KEYS3_BUCKET
- Deploy
For Vercel with PostgreSQL, use Vercel Postgres or a hosted PostgreSQL service like Supabase, Neon, or Railway.
st-henry-next/
├── src/
│ ├── app/
│ │ ├── page.tsx # Main website
│ │ ├── admin/ # CMS admin pages
│ │ └── api/ # API routes
│ └── lib/
│ └── prisma.ts # Prisma client
├── prisma/
│ └── schema.prisma # Database schema
├── docker-compose.yml # PostgreSQL database
├── .env # Environment variables
├── .env.example # Example environment variables
└── package.json
| Page | Function |
|---|---|
/admin |
Dashboard overview |
/admin/schedule |
Manage regular mass times |
/admin/special |
Manage special masses/events |
/admin/gallery |
Manage photo gallery |
/admin/social |
Manage social media links |
- Framework: Next.js 14 (App Router)
- Database: PostgreSQL with Prisma ORM
- Styling: CSS Modules / Tailwind CSS
- Deployment: Vercel