How I Built a Production-Ready AI SaaS Boilerplate with Next.js 16 — Full Stack Breakdown
Every time I started a new AI SaaS project, I spent the first 2-3 weeks on the same things: authentication, Stripe integration, database setup, AI provider plumbing. Over and over. So I built ShipAI — a production-ready Next.js 16 boilerplate that has all of this pre-configured and ready to customi

Every time I started a new AI SaaS project, I spent the first 2-3 weeks on the same things: authentication, Stripe integration, database setup, AI provider plumbing. Over and over.
So I built ShipAI — a production-ready Next.js 16 boilerplate that has all of this pre-configured and ready to customize.
48 files. 16 routes. Zero TypeScript errors.
If you're upgrading from v3, heads up: useChat no longer exposes input, handleInputChange, or append. The new API uses sendMessage and a transport pattern ( DefaultChatTransport ). I spent time figuring this out so you don't have to.
export const dynamic = "force-dynamic" no longer works with Cache Components enabled. Use connection() from next/server plus export const instant = false for dynamic server pages.
checkout.session.completed can fire before the subscription record exists in your database. Always use prisma.subscription.upsert() instead of separate create/update calls.
Prisma v8 has a completely different CLI and is more of a platform play. For a developer-friendly boilerplate, Prisma v5 with the familiar npx prisma generate workflow is the right choice.
If you're building AI SaaS products and want to skip the boilerplate phase:
Happy to answer any questions about the architecture or technical decisions in the comments!