Next.jsReact启动器

next-template — Next.js 启动器模板

作者 hHolyMolly

基于 Next.js 的启动器模板,集成 TypeScript、Tailwind CSS、i18n、状态管理、表单校验与安全中间件,并附带可移除的示例代码。

看看你的网站会是什么样

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

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

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

全部页面与视图 2

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

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

值得关注的模板亮点

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

01

集成 TypeScript 严格模式、Tailwind CSS 与 shadcn/ui 组件

02

使用 next-intl 实现 [locale] 路由、消息键一致性检查与 hreflang

03

提供 Redux Toolkit 与 TanStack Query 的示例代码,含流式 SSR 预取

04

内置 CSP nonce、限流、CSRF 检查等安全中间件

05

通过 pnpm check 统一运行 ESLint、Stylelint、Prettier、Vitest 等质量门禁

06

附带 clean:demo 命令,可移除首页演示代码与示例路由

模板详细介绍

该模板是一个 Next.js 启动器,仓库为 hHolyMolly/next-template,采用 MIT 许可。README 说明其集成 TypeScript 严格模式、Tailwind CSS、next-intl 国际化、Redux Toolkit 与 TanStack Query 状态管理、React Hook Form 与 Zod 表单校验,以及 CSP nonce、限流、CSRF 检查等安全中间件。项目提供可运行的示例页面与 API 路由,并通过 clean:demo 命令移除演示代码。质量工具链包括 ESLint、Stylelint、Prettier、Vitest、knip 和 commitlint,pnpm check 统一运行。环境要求 Node.js 24+ 与 pnpm 10.16+,部署支持 Vercel 或自托管。

Next.jsReact启动器

适合你的项目吗?

适用场景

  • 需要快速搭建带国际化与类型安全的新 Next.js 项目
  • 希望参考表单校验、状态管理与安全中间件的集成方式
  • 在团队中统一代码质量工具链与提交规范
  • 部署到 Vercel 或自托管环境并复用现有 CI 检查

适合人群

  • 使用 Next.js 与 TypeScript 的前端开发者
  • 需要国际化与多语言路由的应用
  • 重视代码质量门禁与安全配置的团队
  • 希望从可运行示例起步并自行清理演示代码的项目

上手与定制指南

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

  1. 1

    需要 Node.js 24+ 与 pnpm 10.16+

  2. 2

    使用 npx degit hHolyMolly/next-template my-app 获取模板,然后 pnpm install

  3. 3

    运行 pnpm dev 启动开发服务器,next-env.d.ts 由 pnpm dev 或 pnpm typecheck 生成

  4. 4

    使用 pnpm clean:demo my-app 移除首页演示代码与示例路由

  5. 5

    环境变量 NEXT_PUBLIC_CLIENT_URL 为必填,本地覆盖可写入 .env.local

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

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

使用时需要遵守

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

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 运行环境要求:需 Node.js 24 及以上版本,并使用 pnpm 10.16 及以上版本。
  • 必须配置环境变量 NEXT_PUBLIC_CLIENT_URL,否则项目无法正常运行。
  • 自托管部署时需置于反向代理之后,并设置 TRUSTED_PROXY_HOPS 环境变量。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

Node.js 24+, pnpm 10.16+.

README 原文

Required: `NEXT_PUBLIC_CLIENT_URL`.

README 原文

Self-hosted — `pnpm build && pnpm start` behind a reverse proxy (set `TRUSTED_PROXY_HOPS`).

README 原文
https://github.com/hHolyMolly/next-template/blob/main/LICENSEhttps://github.com/hHolyMolly/next-template/blob/main/README.md

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

项目核对记录与介绍依据

模板资料

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

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

这个项目需要核对什么

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

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

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

查看具体选型方法 →

介绍的制作与核对状态

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

审核声明: [email protected] · 2026-10-06

查看当时使用的来源资料

SHA-256: 2d089b76d0728f77d8d485e79bf756496142feed2ac7144a40352a1ad0345da7

2026-10-06T07:08:24.911Z

来源文件 / 仓库
<div align="center">
  <h1>Next Template</h1>
  <p>Production-ready Next.js starter with TypeScript, Tailwind CSS v4, i18n and working examples for every shipped library</p>

  <p>
    <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D24-brightgreen?style=flat-square" alt="Node.js"></a>
    <a href="https://nextjs.org"><img src="https://img.shields.io/badge/next.js-16-black?style=flat-square" alt="Next.js"></a>
    <a href="https://www.typescriptlang.org"><img src="https://img.shields.io/badge/typescript-strict-3178C6?style=flat-square" alt="TypeScript"></a>
    <a href="https://github.com/hHolyMolly/next-template/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License"></a>
  </p>
</div>

<br />

## Features

- **Next.js 16** — App Router, Turbopack, React 19, React Compiler
- **TypeScript** — strict mode (`noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`)
- **Tailwind CSS v4** — CSS-first config, oklch design tokens, shadcn/ui components
- **i18n** — next-intl, `[locale]` routing, key-parity check, typed messages, title template + hreflang
- **State** — Redux Toolkit (live `uiSlice` example) + TanStack Query (streaming SSR: pending-query dehydration + `useSuspenseQuery`)
- **Forms** — React Hook Form + shared Zod schema, re-validated in a Server Action
- **Security** — per-request CSP nonce (`strict-dynamic`), hardened headers, one rate-limit identity rule for pages/API/actions, CSRF check for actions, header-only ISR webhook secret
- **Quality gates** — ESLint (0 warnings), Stylelint, Prettier, typecheck (app + tests), Vitest 5, i18n parity, knip, commitlint — `pnpm check` runs them all; CI and Vercel run the same set
- **Supply chain** — pnpm `minimumReleaseAge` + install-script allow-list, SHA-pinned Actions, Dependabot cooldown

## Quick Start

```bash
npx degit hHolyMolly/next-template my-app
cd my-app
pnpm install
git init && pnpm prepare   # enable git hooks
pnpm dev
```

Remove the demo surface when you start building:

```bash
pnpm clean:demo my-app          # degit clones: also renames + finalizes
pnpm clean:demo my-app --force  # git clones: force the finalization step
```

> Node.js 24+, pnpm 10.16+. `next-env.d.ts` is generated by `pnpm dev` / `pnpm typecheck`.

## Living Examples (removed by `clean:demo`)

Every shipped library is exercised by real code on the home page:

| Example                              | Shows                                                                                                                           |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `[locale]/components/ContactForm`    | RHF + zodResolver → Server Action (`withServerAction` + CSRF + rate limit) → toast                                              |
| `[locale]/components/HealthStatus`   | TanStack Query streaming SSR: in-process prefetch + `HydrationBoundary` → `useSuspenseQuery` + `ErrorBoundary`; axios refetches |
| `[locale]/components/DemoBanner`     | Redux `uiSlice` + `featureFlags` + `useLocalStorage`                                                                            |
| `GET /api/health` · `POST /api/echo` | `withApiHandler`: Zod validation, typed errors, rate-limit headers                                                              |

## Commands

| Command                                      | Description                                        |
| -------------------------------------------- | -------------------------------------------------- |
| `pnpm dev` / `build` / `start` / `preview`   | Develop · build · serve                            |
| `pnpm lint` / `lint:fix`                     | ESLint, 0 warnings allowed                         |
| `pnpm lint:css` / `lint:css:fix`             | Stylelint check · autofix                          |
| `pnpm format` / `format:check`               | Prettier write · check                             |
| `pnpm typecheck` / `typecheck:test`          | TypeScript: app · tests                            |
| `pnpm test` / `test:watch` / `test:coverage` | Vitest (+ coverage thresholds)                     |
| `pnpm check`                                 | All gates in one command (same set as CI)          |
| `pnpm check:i18n`                            | Locale key parity                                  |
| `pnpm knip`                                  | Unused files / deps (blocking), exports (advisory) |
| `pnpm analyze`                               | Turbopack bundle analyzer                          |
| `pnpm clean` / `clean:cache` / `clean:demo`  | Cleanup                                            |

Git hooks: pre-commit (lint-staged + i18n parity) · commit-msg (commitlint) · pre-push (typecheck + tests).

## Project Structure

```
src/
├── app/
│   ├── layout.tsx            # <html>/<body>, JSON-LD (nonce), styles, font variable
│   ├── api/                  # health · echo (demo) · revalidate (ISR webhook) — withApiHandler
│   └── [locale]/
│       ├── layout.tsx        # locale + NextIntlClientProvider (client namespaces)
│       ├── page.tsx          # demo home (SSR query prefetch)
│       ├── components/       # demo surface (clean:demo removes it)
│       └── (routes)/         # Header/Footer layout, template page, 404 catch-all
├── components/  UI/ (shadcn) · layouts/ (Header, Footer, LanguageSwitch, WebVitals, …) · icons/
├── configs/     project · metadata · routes · env · featureFlags
├── hooks/       13 SSR-safe hooks
├── lib/         withApiHandler · withServerAction · rateLimit · errors · errorReporting · cn · queryClient
├── messages/    {en,ru}/{translations,metadata,demo}.json
├── services/    api (http policy · axios · serverFetch · queryOptions · cache) · i18n (next-intl)
├── store/       Redux Toolkit (slices/uiSlice)
├── styles/      tailwind.css (@theme) · vars.css (oklch tokens) · normalize.css (@layer base) · fonts.ts
└── proxy.ts     middleware: rate limit → CSP nonce → next-intl
```

## Environment

`.env.development` / `.env.production` are committed (no secrets). Local overrides go to
`.env.local` (gitignored, wins). Required: `NEXT_PUBLIC_CLIENT_URL`. Full list: [.env.example](.env.example).

## Deploy

**Vercel** — import the repo; `vercel.json` runs `pnpm check && pnpm build` on every push (same gates as CI).
Self-hosted — `pnpm build && pnpm start` behind a reverse proxy (set `TRUSTED_PROXY_HOPS`).

## Docs

Architecture rules, conventions and security contracts live in [AGENTS.md](AGENTS.md) —
the single source of truth for humans and AI agents alike. Debugging notes: [docs/gotchas.md](docs/gotchas.md).
Release checks: [docs/verification-playbook.md](docs/verification-playbook.md). Security policy: [SECURITY.md](SECURITY.md).

## License

MIT © [HolyMolly](https://github.com/hHolyMolly)
反馈内容错误

看看同类模板

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