Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Open-source Next.js 14 SaaS starter kit for micro-SaaS with auth, payments, database, email, and analytics preconfigured.

A full-stack Next.js TypeScript template focused on functionality over UI, featuring Zustand, TanStack Query, and ESLint 9 support.
NineTails Stack is an open-source Next.js 14 SaaS starter kit designed for indie hackers to launch micro-SaaS products with auth, payments, database, and email preconfigured.
NineTails Stack is a boilerplate that bundles Next.js 14 (App Router) with Supabase for authentication and PostgreSQL, Stripe for subscription payments, Resend for email, PostHog for analytics, and Drizzle ORM for database access. It is created by GitHub user SRX9 and published on GitHub. The project takes a developer from a fresh clone to a deployed, monetizable SaaS app by following five documented setup steps.
database/schema.ts lets you add tables while preserving the Auth.js required tables.checkout.session.completed, invoice.payment_succeeded, customer.subscription.updated, and customer.subscription.deleted.Getting from repo to deployed app takes five steps: clone the repository and run npm i to install dependencies; rename env.local to .env and fill in values from Supabase, Stripe, Resend, and PostHog; define or modify tables in database/schema.ts and run npx drizzle-kit generate then npx drizzle-kit migrate; create a recurring product on Stripe and configure the webhook to /api/webhooks/stripe; finally deploy to Vercel using the one-click button.
Yes, the template is open-source and hosted on GitHub, so you can clone and use it without license fees. You will still pay for the third-party services you enable, such as Supabase, Stripe, or PostHog, according to their pricing.
Next.js 14 with the App Router, Supabase for authentication and PostgreSQL, Drizzle ORM for database access, Stripe for payments, Resend for email, PostHog for analytics, and Vercel AI SDK for AI features. Styling uses Tailwind CSS with Shadcn UI, Aceternity UI, and Magic UI.
Yes, payments require a Stripe account. You create a recurring product, get its Price ID, put it in your .env file, and set up a webhook endpoint at your domain's /api/webhooks/stripe with the specified subscription events.
Edit the database/schema.ts file to add new tables using Drizzle ORM definitions, then run npx drizzle-kit generate and npx drizzle-kit migrate to apply the changes to Supabase. Keep the existing user, account, session, and verification token tables intact for Auth.js.