
Template details
ninetails-stack
Open-source Next.js 14 SaaS starter kit for micro-SaaS with auth, payments, database, email, and analytics preconfigured.
About this template
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.
What is Ninetails Stack?
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.
Key Features
- Preconfigured tech stack — Next.js 14 with App Router, Tailwind CSS for styling, and Shadcn UI, Aceternity UI, and Magic UI for component libraries.
- Authentication — Supabase Auth with support for Google and GitHub providers via Auth.js, with required tables for users, accounts, sessions, and verification tokens included in the schema.
- Database — Supabase PostgreSQL managed through Drizzle ORM; the schema file at
database/schema.tslets you add tables while preserving the Auth.js required tables. - Payments — Stripe integration for recurring subscriptions, with webhook setup for events like
checkout.session.completed,invoice.payment_succeeded,customer.subscription.updated, andcustomer.subscription.deleted. - Email — Resend integration for transactional email delivery, marked as optional in the environment setup.
- Analytics — PostHog for website and product analytics.
- AI readiness — Vercel AI SDK is included, allowing developers to add AI features like chat or generation without additional wiring.
- One-click deployment — A Vercel deploy button clones and deploys the repository directly, pointing to the GitHub repo.
Who is it for?
- Indie hackers — who want to validate a SaaS idea quickly without wiring up authentication, payments, and database from scratch.
- Startup founders — building an MVP with a modern JavaScript stack and needing a starting point that already handles common plumbing.
- Developers learning SaaS architecture — who want a working reference implementation of Next.js, Supabase, Stripe, Drizzle ORM, and Auth.js to study.
What can you do with it?
- Micro-SaaS founders: Set up a subscription-based web app in a day by creating a Stripe recurring product and pasting the price ID into the environment file.
- AI product builders: Use the included Vercel AI SDK to add chat or generation features on top of the existing auth and billing setup.
- Open-source contributors: Customize the Drizzle schema and add new tables while keeping the required Auth.js tables intact.
How does it work?
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.
FAQ
Is Ninetails Stack free to use?
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.
What is the tech stack?
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.
Do I need to set up a Stripe account to use payments?
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.
How do I add my own database tables?
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.














