内置 Better Auth 邮箱密码认证,含 scrypt 密码哈希、7 天会话与 cookie 缓存,/dashboard 在服务端校验会话
create-next-app — Next.js 启动器模板
作者 nimbuslab
基于 Next.js App Router 的全栈模板,集成 Better Auth 邮箱密码认证、Drizzle ORM 与 PostgreSQL,并提供交互式初始化脚本和 AI 助手配置文件生成。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
Drizzle ORM 连接 PostgreSQL,schema 集中在 src/db/schema.ts,含 user、session、account、verification 表
bun run setup 交互式初始化:检测 Docker、启动数据库、应用 schema、创建演示用户,可选创建 GitHub 仓库
可为 Claude Code、Cursor、Gemini CLI、GitHub Copilot、Windsurf 生成对应的 AI 助手上下文文件
默认 Server Components,仅在需要状态、事件或浏览器 API 时使用 "use client"
Tailwind CSS 与 shadcn/ui(new-york 风格),next-themes 支持浅色、深色和跟随系统主题
模板详细介绍
该模板是一个 Next.js 全栈项目起点,使用 App Router 与 Server Components,默认采用 TypeScript strict 模式。认证由 Better Auth 提供,支持邮箱密码注册登录,会话默认 7 天并在 24 小时后续期,cookie 缓存 5 分钟;受保护的 /dashboard 路由在服务端读取会话,未登录时重定向到 /login。数据层使用 Drizzle ORM 连接 PostgreSQL,schema 集中在 src/db/schema.ts,包含 user、session、account、verification 四张表。UI 基于 Tailwind CSS 与 shadcn/ui(new-york 风格),通过 next-themes 提供浅色、深色和跟随系统三种主题。
项目提供 bun run setup 交互式初始化脚本,可检测 Docker、启动 PostgreSQL、应用 schema、创建演示用户,并可选创建 GitHub 仓库;也可手动执行 bun install、复制 .env.example、docker compose up -d、bun run db:push 和 bun run seed。seed 脚本会创建演示账号 [email protected] / demo1234。数据库既可使用本地 Docker 中的 PostgreSQL 16,也可换成 Neon、Supabase 等托管 PostgreSQL,通过修改 DATABASE_URL 并运行迁移完成切换。
README 明确列出尚未实现的功能:密码找回、邮箱验证、OAuth 提供商(Google、GitHub)、用于保护路由的 src/middleware.ts、带 output: "standalone" 的 Dockerfile,以及 CI 中的自动化测试。这些均位于 Roadmap 中,auth.ts 未配置相应逻辑,模板也未内置邮件服务商。部署方面,README 说明可运行在任何支持 Node 的 Next.js 平台(如 Vercel、Railway、Render),需配置 DATABASE_URL、BETTER_AUTH_SECRET 和 BETTER_AUTH_URL,并在生产数据库上执行 db:generate 与 db:migrate。
适合你的项目吗?
适用场景
- 需要快速搭建带邮箱密码认证和 PostgreSQL 数据层的 Next.js 全栈项目
- 希望在项目初始化时自动生成 AI 编程助手上下文文件,统一团队与助手的协作约定
- 使用 Docker 本地运行 PostgreSQL,或切换到 Neon、Supabase 等托管 PostgreSQL 进行开发
- 作为需要服务端会话校验的受保护后台页面(如 /dashboard)的起点
适合人群
- 使用 Bun 作为运行时和包管理器的 Next.js 开发者
- 需要 TypeScript strict 模式与 Drizzle ORM 类型化查询的全栈项目
- 希望以 shadcn/ui 和 Tailwind CSS 构建界面并支持主题切换的项目
- 接受当前认证仅覆盖邮箱密码、其余认证能力尚在 Roadmap 的团队
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
推荐流程:bun install、bun run setup、bun run dev;手动流程为 bun install、cp .env.example .env、docker compose up -d、bun run db:push、bun run seed、bun run dev
- 2
必须配置 DATABASE_URL、BETTER_AUTH_SECRET 和 BETTER_AUTH_URL;BETTER_AUTH_SECRET 可用 openssl rand -base64 32 生成
- 3
本地 Docker 的 PostgreSQL 使用 postgres/postgres/app 凭据,仅限开发环境,不应带入生产
- 4
修改 src/db/schema.ts 后运行 bun run db:generate 生成迁移,开发环境可用 bun run db:push 直接应用
- 5
执行脚本请使用 bun run <script>,bun build 不带 run 会调用 Bun 自身的打包器而非项目脚本
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- docker-compose.yml 中的 PostgreSQL 使用 postgres/postgres/app 凭据,仅为本地开发用途,不应带入生产环境。
- 模板未内置邮件服务商,密码找回、邮箱验证和 OAuth 提供商均未配置,需自行实现。
- 需将 .env.example 复制为 .env 并自行调整配置,其他 .env 文件不会进入 Git。
- BETTER_AUTH_SECRET 为必填项,需自行用 openssl rand -base64 32 生成。
- 部署需使用支持 Node 运行 Next.js 的平台,如 Vercel、Railway 或 Render。
- 生产部署前需针对生产数据库执行 db:generate 生成迁移并用 db:migrate 应用。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
O `docker-compose.yml` sobe um PostgreSQL 16 em `localhost:5432` com usuário `postgres`, senha `postgres` e banco `app`. São credenciais de desenvolvimento local e não devem ir para produção. O `.env.example` já vem com a `DATABASE_URL` correspondente.
README 原文
O que **não** vem pronto e está no [Roadmap](#roadmap): recuperação de senha, verificação de e-mail e provedores OAuth. Nenhum dos três está configurado no `auth.ts` e o template não traz provedor de e-mail.
README 原文
Copie o `.env.example` para `.env` e ajuste. Nenhum outro arquivo `.env` entra no Git.
README 原文
| `BETTER_AUTH_SECRET` | sim | Segredo de assinatura das sessões. Gere com `openssl rand -base64 32` |
README 原文
Funciona em qualquer plataforma que rode Next.js em Node, como Vercel, Railway ou Render. O caminho é o mesmo:
README 原文
https://github.com/nimbuslab/create-next-app/blob/main/LICENSEhttps://github.com/nimbuslab/create-next-app/blob/main/README.md3. Gere a migração com `bun run db:generate` e aplique com `bun run db:migrate` contra o banco de produção
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-14。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 85 / 100
- 技术栈
- Next.js · React
- 网站类型
- 启动器
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-10
- 截图检查日期
- 2026-10-14
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15
查看当时使用的来源资料
SHA-256: d45cff09afa8a7a39c264443424c3378408f7ba7dda0bbafcbcc2b5f18fef487
2026-10-14T17:04:49.995Z
来源文件 / 仓库<div align="center"> # create-next-app **Template full-stack Next.js com autenticação, banco de dados e configuração pronta para agentes de IA.** Next.js 16 com App Router, React 19, Better Auth, Drizzle ORM sobre PostgreSQL e shadcn/ui. [Read in English](./docs/README.en.md) [](https://github.com/nimbuslab/create-next-app/actions/workflows/ci.yml) [](https://nextjs.org) [](https://react.dev) [](./LICENSE) [Instalação](#instalação) · [Quick start](#quick-start) · [Stack](#stack) · [Scripts](#scripts-disponíveis) · [Roadmap](#roadmap) </div> --- ## Por que create-next-app - **Autenticação funcionando desde o primeiro `bun run dev`**: Better Auth com e-mail e senha, sessão com cache de cookie e `/dashboard` protegido no servidor - **Banco tipado de ponta a ponta**: Drizzle ORM sobre PostgreSQL, com todo o schema em um único arquivo - **Setup interativo**: detecta Docker, sobe o PostgreSQL, aplica o schema, cria o usuário de demonstração e, se você quiser, cria o repositório no GitHub - **Configuração para agentes de IA**: gera o arquivo de contexto do assistente que você usa, com a stack e as convenções do projeto já preenchidas - **Server Components por padrão**: `"use client"` só onde existe estado, evento ou API de navegador - **Tema escuro por padrão**: `next-themes` com alternância entre claro, escuro e a preferência do sistema ## Instalação ### Com a CLI da nimbuslab ```bash bun add -g @nimbuslab/cli nimbus create meu-app --app cd meu-app ``` ### Clonando o template ```bash git clone --depth 1 https://github.com/nimbuslab/create-next-app.git meu-app cd meu-app rm -rf .git ``` ## Quick start Com o setup interativo, que cuida do banco e do arquivo `.env`: ```bash bun install bun run setup bun run dev ``` Se preferir fazer tudo na mão: ```bash bun install cp .env.example .env docker compose up -d bun run db:push bun run seed bun run dev ``` Abra [http://localhost:3000](http://localhost:3000). O `bun run seed` cria um usuário de demonstração: - E-mail: `[email protected]` - Senha: `demo1234` ## Stack As versões abaixo são as declaradas no `package.json` e no `docker-compose.yml` deste repositório. | Peça | Versão | Papel | |---|---|---| | [Next.js](https://nextjs.org) | `16.3.0` | App Router, Server Components, Turbopack | | [React](https://react.dev) | `19.2.8` | Biblioteca de interface | | [TypeScript](https://www.typescriptlang.org) | `^5` | Tipagem estática em modo `strict` | | [Better Auth](https://better-auth.com) | `^1.3.10` | Autenticação e sessões | | [Drizzle ORM](https://orm.drizzle.team) | `^0.44.0` | Consultas tipadas | | [drizzle-kit](https://orm.drizzle.team/docs/kit-overview) | `^0.31.0` | Migrações e Drizzle Studio | | [PostgreSQL](https://www.postgresql.org) | `16-alpine` | Banco relacional (imagem do `docker-compose.yml`) | | [Tailwind CSS](https://tailwindcss.com) | `^4` | Estilização utilitária, configuração via CSS | | [shadcn/ui](https://ui.shadcn.com) | estilo `new-york` | Componentes acessíveis sobre Radix UI | | [Bun](https://bun.sh) | `1.3+` | Runtime e gerenciador de pacotes | O `package.json` não fixa a versão do Bun: `1.3+` é a faixa em que o template é desenvolvido e a CI usa a mais recente. O campo `engines` exige Node `>=18` para quem rodar o build fora do Bun. ## Estrutura do projeto ``` . ├── .github/workflows/ci.yml # typecheck, lint e build ├── docker-compose.yml # PostgreSQL 16 local ├── drizzle.config.ts # configuração do drizzle-kit ├── scripts/ │ ├── ai-configs.ts # modelos de config por assistente de IA │ ├── seed.ts # cria o usuário de demonstração │ └── setup.ts # assistente de configuração inicial └── src/ ├── app/ │ ├── (auth)/ │ │ ├── login/page.tsx │ │ └── register/page.tsx │ ├── api/auth/[...all]/route.ts # handler do Better Auth │ ├── dashboard/ # rota protegida │ ├── globals.css # tokens de tema │ ├── layout.tsx │ └── page.tsx # página pública ├── components/ │ ├── theme-provider.tsx │ └── ui/ # componentes shadcn/ui ├── db/ │ ├── index.ts # cliente Drizzle e pool do pg │ └── schema.ts # tabelas user, session, account, verification └── lib/ ├── auth.ts # configuração do Better Auth (servidor) ├── auth-client.ts # cliente de autenticação (navegador) └── utils.ts # helper cn() ``` ## Scripts disponíveis | Comando | O que faz | |---|---| | `bun run dev` | Servidor de desenvolvimento com Turbopack | | `bun run build` | Build de produção | | `bun run start` | Servidor de produção a partir do build | | `bun run lint` | Verifica o código com ESLint | | `bun run lint:fix` | Aplica as correções automáticas do ESLint | | `bun run typecheck` | `tsc --noEmit` | | `bun run setup` | Assistente de configuração inicial | | `bun run seed` | Cria o usuário de demonstração | | `bun run db:generate` | Gera arquivos de migração a partir do schema | | `bun run db:push` | Aplica o schema direto no banco (desenvolvimento) | | `bun run db:migrate` | Roda as migrações geradas (produção) | | `bun run db:studio` | Abre o Drizzle Studio | Use sempre `bun run <script>`. `bun build` sem o `run` chama o bundler do próprio Bun, não este script. ## Banco de dados ### Local, com Docker ```bash docker compose up -d bun run db:push bun run seed ``` O `docker-compose.yml` sobe um PostgreSQL 16 em `localhost:5432` com usuário `postgres`, senha `postgres` e banco `app`. São credenciais de desenvolvimento local e não devem ir para produção. O `.env.example` já vem com a `DATABASE_URL` correspondente. ### Provedor gerenciado Serve qualquer PostgreSQL, como [Neon](https://neon.tech) ou [Supabase](https://supabase.com). Troque a `DATABASE_URL` no `.env` e rode as migrações: ```bash bun run db:generate bun run db:migrate ``` ### Alterando o schema Edite `src/db/schema.ts` e depois: ```bash bun run db:generate # gera a migração bun run db:push # ou aplique direto, em desenvolvimento ``` ### Drizzle Studio ```bash bun run db:studio ``` Abre em [https://local.drizzle.studio](https://local.drizzle.studio). ## Autenticação Configurada em `src/lib/auth.ts` com [Better Auth](https://better-auth.com) e o adaptador do Drizzle. O que vem pronto: - Cadastro e login com e-mail e senha - Hash de senha com scrypt, o padrão do Better Auth - Sessão de 7 dias, renovada a cada 24 horas, com cache de cookie de 5 minutos - `/dashboard` protegido: `src/app/dashboard/page.tsx` lê a sessão no servidor e redireciona para `/login` quando não existe O que **não** vem pronto e está no [Roadmap](#roadmap): recuperação de senha, verificação de e-mail e provedores OAuth. Nenhum dos três está configurado no `auth.ts` e o template não traz provedor de e-mail. ## Configuração para agentes de IA O `bun run setup` pergunta qual assistente você usa e gera o arquivo de contexto correspondente, com a stack, a estrutura de pastas e as convenções do projeto: | Assistente | Arquivo gerado | |---|---| | Claude Code | `CLAUDE.md` | | Cursor | `.cursorrules` | | Gemini CLI | `.gemini/GEMINI.md` | | GitHub Copilot | `.github/copilot-instructions.md` | | Windsurf | `.windsurfrules` | Os modelos ficam em `scripts/ai-configs.ts`. ## Adicionando componentes ```bash bunx --bun shadcn@latest add dialog bunx --bun shadcn@latest add table ``` O `components.json` já aponta para `src/components/ui` e para os tokens em `src/app/globals.css`. ## Variáveis de ambiente Copie o `.env.example` para `.env` e ajuste. Nenhum outro arquivo `.env` entra no Git. | Variável | Obrigatória | Descrição | |---|---|---| | `DATABASE_URL` | sim | String de conexão do PostgreSQL, lida por `src/db/index.ts` e por `drizzle.config.ts` | | `BETTER_AUTH_SECRET` | sim | Segredo de assinatura das sessões. Gere com `openssl rand -base64 32` | | `BETTER_AUTH_URL` | sim | URL pública da aplicação | | `NEXT_PUBLIC_APP_URL` | não | Base do cliente de autenticação. Sem ela, o padrão é `http://localhost:3000` | | `NODE_ENV` | não | `development` ou `production` | ## Deploy Funciona em qualquer plataforma que rode Next.js em Node, como Vercel, Railway ou Render. O caminho é o mesmo: 1. Provisione um PostgreSQL e pegue a connection string 2. Configure `DATABASE_URL`, `BETTER_AUTH_SECRET` e `BETTER_AUTH_URL` no ambiente 3. Gere a migração com `bun run db:generate` e aplique com `bun run db:migrate` contra o banco de produção 4. Faça o deploy Gere o segredo com: ```bash openssl rand -base64 32 ``` ## Roadmap - [ ] Recuperação de senha - [ ] Verificação de e-mail - [ ] Provedores OAuth (Google e GitHub) - [ ] `src/middleware.ts` com o matcher das rotas protegidas - [ ] `Dockerfile` com `output: "standalone"` para self-hosting - [ ] Testes automatizados na CI ## Contribuindo Leia o [guia de contribuição](./CONTRIBUTING.md) antes de abrir um PR. Em resumo: branch a partir da `main`, commits em português seguindo Conventional Commits, e `bun run typecheck`, `bun run lint` e `bun run build` verdes antes de pedir revisão. O [código de conduta](./CODE_OF_CONDUCT.md) vale para todo mundo que participa do projeto. ## Suporte Dúvidas, bugs e sugestões vão para as [Issues](https://github.com/nimbuslab/create-next-app/issues). Falhas de segurança seguem o processo descrito em [SECURITY.md](./SECURITY.md). ## Licença [MIT](./LICENSE) © [nimbuslab](https://nimbuslab.com.br) --- <div align="center"> Construído em Brasília, DF, Brasil </div>
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

ai-website-cloner-template
Clone any website with one command using AI coding agents
Next.js · 启动器

Next.js SaaS Starter
Next.js SaaS Starter 是 Next.js 官方维护的 SaaS 起点模板,定位介于学习资源和可直接部署的脚手架之间。
Next.js · SaaS

Next.js Commerce
Next.js Commerce 是 Vercel 团队维护的电商启动模板,基于 Next.js App Router 构建,采用服务端渲染、React Server Components、Server Actions …
Next.js · 电商

Next-js-Boilerplate
Next-js-Boilerplate 是一个面向 Next.js 16、Tailwind CSS 4 和 TypeScript 的启动器,核心定位是开发者体验优先。
Next.js · 启动器

tailwind-nextjs-starter-blog
tailwind-nextjs-starter-blog 是一个面向个人技术博客的 Next.js 与 Tailwind CSS 启动模板,其 v2 版本基于 App Router 与 React Server Comp…
Next.js · 博客

next-forge
Production-grade Turborepo template for Next.js apps.
Next.js · 启动器
