基于 Next.js App Router,使用 TypeScript 与 Tailwind CSS 构建
landing-page-template-2 — Next.js 企业官网模板
作者 MohamedDjoudir
基于 Next.js App Router 的 SaaS 落地页模板,内置英文与阿拉伯语双语及 RTL 支持,采用 TypeScript 与 Tailwind CSS 构建。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
通过 next-intl 提供 en 与 ar 双语路由,阿拉伯语按 RTL 渲染
文案、aria 标签、alt 文本与元数据集中在 messages 目录,便于统一维护
数据请求分层为 lib/api 与 services(TanStack Query),组件不直接 fetch
内置 newsletter 订阅表单,使用 React Hook Form 与 Zod 校验
主题令牌以 CSS 变量定义,支持浅色与深色,默认深色
模板详细介绍
这是一个面向 SaaS 产品的落地页模板,仓库名为 landing-page-template-2,README 中自称 SAASPRO。它使用 Next.js 的 App Router 组织页面,配合 TypeScript 与 Tailwind CSS 完成界面与样式,并集成 next-intl 实现多语言路由。
模板默认提供 en 与 ar 两个语言环境,路由带语言前缀(/en、/ar),访问根路径会重定向到 /en;<html> 的 lang 与 dir 属性随语言变化,阿拉伯语按从右到左渲染。所有可见文案、aria 标签、alt 文本和页面元数据都放在 messages/en.json 与 messages/ar.json 中,两个文件需保持相同的键。样式使用逻辑方向工具类,使布局在阿拉伯语下自动镜像。
页面结构上,src/app/[locale]/page.tsx 负责组合各个区块,src/features/home/ 下按区块分目录,每个区块包含 index.tsx 及 components、constants、types、hooks、utils 等子目录。数据请求约定为 src/lib/api 负责调用端点,src/services 提供基于 TanStack Query 的钩子,组件不直接调用 fetch。模板自带的唯一接口是 newsletter 订阅表单,它向 NEXT_PUBLIC_API_BASE_URL 指向的地址提交 { "email": string };该变量为空时表单只显示错误信息,不发送请求。表单使用 React Hook Form 与基于翻译文案构建的 Zod 校验。
主题方面,globals.css 中以 CSS 变量定义主题令牌,支持浅色与深色,并通过 next-themes 默认使用深色。动画使用 Framer Motion,手风琴等原语来自 Radix UI,图标来自 Lucide React。仓库还包含 Header 与 Footer 布局、LocaleSwitcher 语言切换组件以及主题与查询相关的 Provider。
使用限制方面,README 说明需要 Node.js 18.17 或更高版本,并通过 packageManager 固定 Yarn 4,需先执行 corepack enable;开发与生产启动脚本都监听 3030 端口。依赖被固定到精确版本并提交了 yarn.lock,升级需手动修改版本后重新安装并验证构建。仓库采用 MIT 许可,但演示图片、字体、图标等第三方素材需按各自许可单独核对,域名、托管、数据库、支付或 AI 等外部服务可能另行收费。
适合你的项目吗?
适用场景
- 为 SaaS 产品搭建带多语言支持的营销落地页
- 需要英文与阿拉伯语双语及 RTL 布局的站点
- 以 Next.js App Router 为起点组织按区块拆分的首页
- 需要接入 newsletter 订阅接口并做表单校验的页面
适合人群
- 熟悉 Next.js 与 TypeScript、希望直接改区块内容的开发者
- 需要中英阿等双语或 RTL 布局能力的项目
- 接受按 features 目录组织页面区块的团队
- 使用 Yarn 4 作为包管理器的项目
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Node.js 18.17 或更高版本,并先执行 corepack enable 以启用仓库固定的 Yarn 4
- 2
依次运行 yarn install、复制 .env.example 为 .env.local、yarn dev;开发与生产启动脚本均监听 3030 端口
- 3
配置 NEXT_PUBLIC_API_BASE_URL 指向接收 newsletter 订阅的 API,为空时表单只显示错误信息且不发送请求
- 4
依赖固定为精确版本且提交了 yarn.lock,升级需手动修改版本后重新安装并验证构建
- 5
演示图片、字体、图标等第三方素材需按各自许可核对,外部服务可能另行收费
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 使用需 Node.js 18.17 或更高版本,并通过 packageManager 固定 Yarn 4,需先执行 corepack enable 启用。
- 开发与生产启动脚本均监听 3030 端口,而非默认端口。
- newsletter 订阅表单依赖外部 API,需配置 NEXT_PUBLIC_API_BASE_URL 指向接收订阅的接口;该变量为空时表单只显示错误信息且不发送请求。
- 依赖固定为精确版本并提交 yarn.lock,升级需手动修改版本后重新安装并验证构建。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
Requires Node.js 18.17 or later and [Yarn](https://yarnpkg.com) (the repository pins Yarn 4 through `packageManager`; run `corepack enable` once).
README 原文
The dev and start scripts serve on [http://localhost:3030](http://localhost:3030).
README 原文
Base URL of the API that receives newsletter sign-ups. The form posts `{ "email": string }` to `${NEXT_PUBLIC_API_BASE_URL}/newsletter/subscribe`. When it is empty the form shows its error message and sends nothing.
README 原文
https://github.com/MohamedDjoudir/landing-page-template-2/blob/main/LICENSEhttps://github.com/MohamedDjoudir/landing-page-template-2/blob/main/README.mdEvery dependency is pinned to an exact version and `yarn.lock` is committed. Upgrade on purpose: edit the version, run `yarn install`, then verify the build.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-03。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 92 / 100
- 技术栈
- Next.js · SolidJS · React
- 网站类型
- 企业官网 · 启动器
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-26
- 截图检查日期
- 2026-10-03
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-04
查看当时使用的来源资料
SHA-256: a2a5322c92183fd5ce5f6a77db9d395e32c9d12e063e1244aee28bfa8903327a
2026-10-03T20:59:04.354Z
来源文件 / 仓库# SAASPRO – SaaS Landing Page Template
**SAASPRO** is a modern SaaS landing page template built with **Next.js 15**, **TypeScript** and **Tailwind CSS**, available in **English** and **Arabic** (right-to-left).
**Live Demo & Details:** [aniq-ui.com SaaS Dashboard Template](https://www.aniq-ui.com/en/templates/saas-dashboard-nextjs-app-template)
---
## Getting Started
Requires Node.js 18.17 or later and [Yarn](https://yarnpkg.com) (the repository pins Yarn 4 through `packageManager`; run `corepack enable` once).
```sh
yarn install
cp .env.example .env.local
yarn dev
```
The dev and start scripts serve on [http://localhost:3030](http://localhost:3030). Visiting `/` redirects to `/en`.
| Script | What it does |
| ---------------- | ----------------------------------- |
| `yarn dev` | Development server on port 3030 |
| `yarn build` | Production build |
| `yarn start` | Serve the production build on 3030 |
| `yarn typecheck` | Run the TypeScript compiler |
Every dependency is pinned to an exact version and `yarn.lock` is committed. Upgrade on purpose: edit the version, run `yarn install`, then verify the build.
---
## Environment variables
| Variable | Purpose |
| -------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `NEXT_PUBLIC_API_BASE_URL` | Base URL of the API that receives newsletter sign-ups. The form posts `{ "email": string }` to `${NEXT_PUBLIC_API_BASE_URL}/newsletter/subscribe`. When it is empty the form shows its error message and sends nothing. |
---
## Languages
Locales are `en` (default) and `ar`. Routes are prefixed with the locale (`/en`, `/ar`), and `<html lang dir>` follows it, so Arabic renders right-to-left.
- `messages/en.json` and `messages/ar.json` hold every visible string, aria label, alt text and the page metadata. Both files must keep the same keys.
- `src/i18n/` holds the routing (`routing.ts`), request config (`request.ts`), locale-aware navigation helpers and the text direction helper.
- `src/middleware.ts` negotiates the locale.
- Constants only carry keys, routes, icons and numbers. Components resolve the text with `useTranslations` from those keys.
- Styling uses logical utilities (`ms-*`, `pe-*`, `start-*`, `text-start`, `rtl:rotate-180` on directional icons) so the layout mirrors in Arabic.
To add a language, add it to `locales` in `src/i18n/routing.ts`, add `messages/<locale>.json`, and add its name under `LocaleSwitcher.names` in every messages file.
---
## Project structure
```
messages/ en.json, ar.json
src/
├── app/[locale]/ layout.tsx (html, providers, metadata) and page.tsx (the page composition)
├── components/ Shared UI: ui/, backgrounds/, Logo, SectionHeader, LocaleSwitcher
├── config/ Site constants (name, URL, social links)
├── features/home/ One folder per page section
│ └── <Section>/ index.tsx, components/, constants/, types/, hooks/ and utils/ where needed
├── hooks/ Shared hooks (one per file)
├── i18n/ next-intl routing, request config, navigation
├── layouts/ Header and Footer, each with components/, hooks/, constants/, types/
├── lib/
│ ├── api/ The only place that calls an endpoint (fetch + URL)
│ └── utils.ts cn() helper
├── providers/ Theme and TanStack Query providers
├── services/ TanStack Query hooks and keys per domain, built on lib/api
├── styles/ globals.css
├── types/ Shared types (ApiResponse, route params)
└── middleware.ts Locale routing
```
Conventions:
- `page.tsx` composes sections; each section folder has an `index.tsx` and everything else in subfolders.
- One component per file, one hook per file in `hooks/`, one helper per file in `utils/`. `index.ts` files only re-export.
- Data flows `src/lib/api` (endpoint) -> `src/services` (TanStack Query hook) -> feature. Components never call `fetch` directly.
- The newsletter form uses React Hook Form with a Zod schema built from translated messages.
### Adding a section
1. Create `src/features/home/<Section>/` with `index.tsx`, `components/` and `constants/`.
2. Add its texts under a new namespace in both `messages/*.json` files and read them with `useTranslations`.
3. Export it from `src/features/home/index.ts` and place it in `src/app/[locale]/page.tsx`.
---
## Styling
Tailwind CSS with CSS variables for the theme tokens in `src/styles/globals.css` (light and dark, dark by default through `next-themes`). Cards and sections separate from the page by fill; borders are kept for inputs, dividers and outlined buttons. Hover states change colour rather than scale, and entrance animations only fade.
---
## Tech Stack
| Technology | Purpose |
| -------------- | ---------------------------------- |
| Next.js 15 | React framework with App Router |
| TypeScript | Type safety |
| Tailwind CSS | Utility-first styling |
| next-intl | Internationalisation and routing |
| TanStack Query | Server requests (newsletter) |
| React Hook Form + Zod | Forms and validation |
| Framer Motion | Animations |
| Radix UI | Accordion and slot primitives |
| Lucide React | Icons |
| next-themes | Theme management |
---
## Support
For questions or support, contact the [Aniq UI team](https://www.aniq-ui.com/#contact).
---
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
Created by [Aniq UI](https://www.aniq-ui.com), premium Next.js templates for modern web apps.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

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 · 启动器
