Next.jsReactSaaS启动器

next-launch — Next.js SaaS模板

作者 adityayaduvanshi

NextStack 是一个基于 Next.js 15 App Router 的启动模板,预置 Better Auth 认证、Prisma 7 与 PostgreSQL 数据库、shadcn/ui 组件库和 Tailwind CSS v4,并提供邮箱密码、OAuth、双因素认证及受保护路由等配置。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

2 个预览视图
桌面端首页1 / 2
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 2

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-14查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

预置 Better Auth 认证,支持邮箱密码注册登录、会话管理、Google 与 GitHub OAuth 以及 TOTP 双因素认证

02

使用 Prisma 7 与 PostgreSQL,提供类型安全的数据库客户端和迁移命令

03

预装 50 多个 shadcn/ui 组件,搭配 Tailwind CSS v4 与 Geist 字体

04

通过中间件实现受保护路由,并可用单个 AuthPage 组件复用登录与注册页面

05

使用 next-themes 实现明暗主题切换

06

项目名称、描述和 URL 集中在 config/app.ts 一处配置

模板详细介绍

该模板面向需要快速搭建带认证与数据库的 Next.js 应用的开发者。README 说明其技术栈包括 Next.js 15(App Router、Turbopack)、TypeScript、Better Auth、Prisma 7(PostgreSQL)、shadcn/ui、Tailwind CSS v4 和 Geist 字体。功能上提供邮箱密码注册登录与会话管理、可通过环境变量启用的 Google 与 GitHub OAuth、基于 TOTP 的双因素认证、基于中间件的受保护路由、类型安全的 Prisma 客户端、50 多个预装 shadcn/ui 组件、使用 next-themes 的明暗主题,以及由单个 AuthPage 组件驱动的登录与注册模板。项目配置集中在 config/app.ts,用于修改应用名称、描述和 URL。README 未提供关于性能、生产就绪程度或除上述功能外的其他能力说明。

Next.jsSaaS启动器

适合你的项目吗?

适用场景

  • 需要快速搭建带邮箱密码、OAuth 和双因素认证的 Next.js 应用
  • 使用 Prisma 与 PostgreSQL 作为类型安全数据库层的项目
  • 希望直接复用 shadcn/ui 组件库和 Tailwind CSS 样式的界面开发
  • 需要受保护路由和会话管理的后台或用户中心类应用
  • 通过 Vercel 或 Docker 部署的 Next.js 应用

适合人群

  • 熟悉 Next.js App Router 与 TypeScript 的开发者
  • 需要预置认证与数据库配置以缩短初始搭建时间的项目
  • 计划使用 PostgreSQL 和 Prisma 进行数据建模的团队
  • 希望以 shadcn/ui 为基础构建自定义界面的开发者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    克隆仓库后运行 npm install 安装依赖

  2. 2

    复制 env.example 为 .env 并填写 NEXT_PUBLIC_APP_URL、BETTER_AUTH_SECRET、BETTER_AUTH_URL 和 DATABASE_URL 等必填变量

  3. 3

    运行 npx prisma migrate dev --name init 推送数据库结构

  4. 4

    运行 npm run dev 启动开发服务器,默认访问 http://localhost:3000

  5. 5

    OAuth 提供商需在 .env 中配置对应客户端 ID 与密钥后自动启用,回调地址为 /api/auth/callback/{provider}

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 必须提供 PostgreSQL 数据库连接字符串(DATABASE_URL),项目依赖外部 PostgreSQL 服务才能运行。
  • 必须自行生成并配置 BETTER_AUTH_SECRET 随机密钥,否则认证功能无法正常工作。
  • 启用 Google OAuth 需自行申请并配置 GOOGLE_CLIENT_ID 与 GOOGLE_CLIENT_SECRET,属于外部服务账号要求。
  • 启用 GitHub OAuth 需自行申请并配置 GITHUB_CLIENT_ID 与 GITHUB_CLIENT_SECRET,属于外部服务账号要求。
  • 使用 OAuth 需在对应提供商后台自行设置回调地址,属于外部服务配置要求。
  • 部署到 Vercel 时需在平台仪表盘中手动配置全部环境变量,包括生产域名对应的 URL。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

| `DATABASE_URL` | Yes | PostgreSQL connection string |

README 原文

| `BETTER_AUTH_SECRET` | Yes | Random secret — run `openssl rand -base64 32` |

README 原文

| `GOOGLE_CLIENT_ID` | Optional | Enables Google OAuth |

README 原文

| `GITHUB_CLIENT_ID` | Optional | Enables GitHub OAuth |

README 原文

2. Set the OAuth callback URL in your provider's dashboard:

README 原文

Set all environment variables in the Vercel dashboard under **Settings → Environment Variables**. Make sure `NEXT_PUBLIC_APP_URL` and `BETTER_AUTH_URL` are set to your production domain.

README 原文
https://github.com/adityayaduvanshi/next-launch/blob/master/LICENSEhttps://github.com/adityayaduvanshi/next-launch/blob/master/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-14。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 80 / 100
技术栈
Next.js · React
网站类型
SaaS · 启动器
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-04-12
截图检查日期
2026-10-14

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15

查看当时使用的来源资料

SHA-256: 24992ad20f8d7108f2a9e2c6485c8801fba12d405ea8bd08d3ced81ed157d9fa

2026-10-14T18:12:19.231Z

来源文件 / 仓库
# NextStack

A production-ready Next.js starter with authentication, a type-safe database, and a complete UI system — all pre-configured so you can start building on day one.

## Stack

| Layer | Technology |
|---|---|
| Framework | [Next.js 15](https://nextjs.org) (App Router, Turbopack) |
| Language | [TypeScript](https://www.typescriptlang.org) |
| Auth | [Better Auth](https://better-auth.com) |
| Database ORM | [Prisma 7](https://www.prisma.io) (PostgreSQL) |
| UI Components | [shadcn/ui](https://ui.shadcn.com) |
| Styling | [Tailwind CSS v4](https://tailwindcss.com) |
| Fonts | [Geist](https://vercel.com/font) |

## Features

- **Email/password auth** — sign up, sign in, session management
- **OAuth** — Google and GitHub (enable by adding env vars)
- **Two-factor authentication** — TOTP-based 2FA via Better Auth plugin
- **Protected routes** — middleware-based route protection, ready to extend
- **Type-safe database** — Prisma client with full TypeScript inference
- **Component library** — 50+ shadcn/ui components pre-installed
- **Dark mode** — light/dark theme with `next-themes`
- **Reusable auth templates** — single `AuthPage` component drives both sign-in and sign-up
- **Project config** — one file (`config/app.ts`) to rename and rebrand everything

---

## Getting Started

### 1. Clone the repository

```bash
git clone https://github.com/adityayaduvanshi/next-launch.git
cd next-launch
```

### 2. Install dependencies

```bash
npm install
```

### 3. Set up environment variables

```bash
cp env.example .env
```

Then fill in your values (see [Environment Variables](#environment-variables) below).

### 4. Push the database schema

```bash
npx prisma migrate dev --name init
```

### 5. Start the dev server

```bash
npm run dev
```

Open [http://localhost:3000](http://localhost:3000).

---

## Environment Variables

| Variable | Required | Description |
|---|---|---|
| `NEXT_PUBLIC_APP_URL` | Yes | Your app's public URL (e.g. `http://localhost:3000`) |
| `BETTER_AUTH_SECRET` | Yes | Random secret — run `openssl rand -base64 32` |
| `BETTER_AUTH_URL` | Yes | Same as `NEXT_PUBLIC_APP_URL` |
| `DATABASE_URL` | Yes | PostgreSQL connection string |
| `GOOGLE_CLIENT_ID` | Optional | Enables Google OAuth |
| `GOOGLE_CLIENT_SECRET` | Optional | Enables Google OAuth |
| `GITHUB_CLIENT_ID` | Optional | Enables GitHub OAuth |
| `GITHUB_CLIENT_SECRET` | Optional | Enables GitHub OAuth |

> OAuth providers are **automatically disabled** if their env vars are not set — no code changes needed.

---

## Project Structure

```
next-app/
├── app/
│   ├── (auth)/                  # Auth route group
│   │   ├── _components/
│   │   │   ├── auth-form.tsx    # Shared sign-in / sign-up form
│   │   │   └── auth-page.tsx    # Page shell with logic & layout
│   │   ├── sign-in/[[...sign-in]]/page.tsx
│   │   └── sign-up/[[...sign-up]]/page.tsx
│   ├── (marketing)/             # Public marketing pages
│   │   ├── _components/
│   │   │   └── theme-toggle.tsx
│   │   └── page.tsx             # Landing page
│   ├── globals.css
│   └── layout.tsx               # Root layout with metadata
├── config/
│   └── app.ts                   # ← Project name, description, URL
├── lib/
│   ├── auth/
│   │   ├── auth.ts              # Better Auth server config
│   │   ├── auth-client.ts       # Better Auth browser client
│   │   └── index.ts
│   ├── db.ts                    # Prisma client singleton
│   └── utils.ts
├── prisma/
│   └── schema.prisma            # Database schema
├── components/
│   └── ui/                      # shadcn/ui components
└── env.example
```

---

## Customization

### Rename the project

Edit `config/app.ts` — this is the single source of truth for your app's name, description, and URL:

```ts
export const appConfig = {
  name: "YourApp",
  description: "Your app description",
  url: "https://yourapp.com",
}
```

### Add a database model

1. Add your model to `prisma/schema.prisma`
2. Run `npx prisma migrate dev --name your-model`
3. Use it anywhere via `import db from "@/lib/db"`

```ts
import db from "@/lib/db"

const posts = await db.post.findMany({
  where: { authorId: session.user.id },
})
```

### Access the session in a Server Component

```ts
import { headers } from "next/headers"
import { auth } from "@/lib/auth"

export default async function Page() {
  const session = await auth.api.getSession({
    headers: await headers(),
  })

  if (!session) redirect("/sign-in")

  return <div>Hello, {session.user.name}</div>
}
```

### Add an OAuth provider

1. Add credentials to `.env`:
   ```
   GOOGLE_CLIENT_ID=your-client-id
   GOOGLE_CLIENT_SECRET=your-client-secret
   ```
2. Set the OAuth callback URL in your provider's dashboard:
   ```
   http://localhost:3000/api/auth/callback/google
   ```

That's it — the provider activates automatically.

### Enable / disable Two-Factor Auth

2FA is enabled by default via the `twoFactor()` plugin in `lib/auth/auth.ts`. Remove it from the `plugins` array to disable it.

---

## Available Scripts

```bash
npm run dev          # Start dev server (Turbopack)
npm run build        # Production build
npm run start        # Start production server
npm run typecheck    # TypeScript type check
npm run lint         # ESLint
npm run format       # Prettier
```

---

## Deployment

### Vercel (recommended)

```bash
npm i -g vercel
vercel
```

Set all environment variables in the Vercel dashboard under **Settings → Environment Variables**. Make sure `NEXT_PUBLIC_APP_URL` and `BETTER_AUTH_URL` are set to your production domain.

### Docker / other platforms

Build the production image:

```bash
npm run build
npm run start
```

The app runs on port `3000` by default.

---

## License

MIT — use this for anything, personal or commercial.
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。