Next.jsSolidJSReact企业官网启动器

landing-page-template-2 — Next.js 企业官网模板

作者 MohamedDjoudir

基于 Next.js App Router 的 SaaS 落地页模板,内置英文与阿拉伯语双语及 RTL 支持,采用 TypeScript 与 Tailwind CSS 构建。

看看你的网站会是什么样

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

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

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

全部页面与视图 3

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

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

值得关注的模板亮点

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

01

基于 Next.js App Router,使用 TypeScript 与 Tailwind CSS 构建

02

通过 next-intl 提供 en 与 ar 双语路由,阿拉伯语按 RTL 渲染

03

文案、aria 标签、alt 文本与元数据集中在 messages 目录,便于统一维护

04

数据请求分层为 lib/api 与 services(TanStack Query),组件不直接 fetch

05

内置 newsletter 订阅表单,使用 React Hook Form 与 Zod 校验

06

主题令牌以 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 等外部服务可能另行收费。

Next.jsSolidJS企业官网启动器

适合你的项目吗?

适用场景

  • 为 SaaS 产品搭建带多语言支持的营销落地页
  • 需要英文与阿拉伯语双语及 RTL 布局的站点
  • 以 Next.js App Router 为起点组织按区块拆分的首页
  • 需要接入 newsletter 订阅接口并做表单校验的页面

适合人群

  • 熟悉 Next.js 与 TypeScript、希望直接改区块内容的开发者
  • 需要中英阿等双语或 RTL 布局能力的项目
  • 接受按 features 目录组织页面区块的团队
  • 使用 Yarn 4 作为包管理器的项目

上手与定制指南

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

  1. 1

    需要 Node.js 18.17 或更高版本,并先执行 corepack enable 以启用仓库固定的 Yarn 4

  2. 2

    依次运行 yarn install、复制 .env.example 为 .env.local、yarn dev;开发与生产启动脚本均监听 3030 端口

  3. 3

    配置 NEXT_PUBLIC_API_BASE_URL 指向接收 newsletter 订阅的 API,为空时表单只显示错误信息且不发送请求

  4. 4

    依赖固定为精确版本且提交了 yarn.lock,升级需手动修改版本后重新安装并验证构建

  5. 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 原文

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.

README 原文
https://github.com/MohamedDjoudir/landing-page-template-2/blob/main/LICENSEhttps://github.com/MohamedDjoudir/landing-page-template-2/blob/main/README.md

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.
反馈内容错误

看看同类模板

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