Building a Blog CMS with Next.js 15 and Prisma
A practical guide to replacing a Laravel CMS with a modern Next.js full-stack solution using Prisma and Neon PostgreSQL.
Why Replace Laravel with Next.js?
After running a Laravel + Filament CMS for several months, I decided to consolidate the stack. Instead of maintaining a separate PHP backend and a Next.js frontend, the goal was to have everything in one TypeScript codebase.
The Architecture
The new setup consists of:
- Next.js 15 (App Router) as both the API server and admin UI
- Prisma 7 with the Neon adapter for edge-compatible database queries
- NextAuth v5 for authentication
- Tiptap as the rich text editor
- Cloudflare R2 for image storage
Route Structure
The API routes mirror the previous Laravel API exactly so the frontend requires no changes:
/api/v1/posts
/api/v1/posts/[slug]
/api/v1/categories
/api/v1/now
Deployment
The entire app deploys to Vercel as a single serverless application. No EC2, no PHP, no Nginx configuration.
