Next.js App Router 项目结构,配合 TypeScript 与 Tailwind CSS
landing-page-template-1 — Next.js 企业官网模板
作者 MohamedDjoudir
MONO 是一个基于 Next.js 的创意机构作品集模板,采用极简粗野主义风格,内置英语与阿拉伯语(RTL)双语路由,附带联系表单与主题切换。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
内置 en 与 ar 双语路由,阿拉伯语版本按 RTL 镜像布局
所有可见文案与元数据集中在 messages/en.json 与 messages/ar.json
联系表单使用 React Hook Form + Zod 校验,经 TanStack Query 提交
src/lib/api 集中管理 fetch 与接口地址,便于替换后端
依赖锁定到精确版本并提交 yarn.lock
模板详细介绍
MONO 是一个面向创意机构与作品集场景的落地页模板,代码托管在 GitHub 的 MohamedDjoudir/landing-page-template-1 仓库,采用 MIT 许可。模板使用 Next.js App Router 构建,配合 TypeScript 与 Tailwind CSS 完成样式,整体视觉走极简粗野主义路线。
模板内置英语(en,默认)与阿拉伯语(ar)两套语言,分别路由到 /en 与 /ar,根路径 / 会重定向到 /en。所有可见文案、aria-label、alt 文本与页面元数据都集中在 messages/en.json 与 messages/ar.json 中,新增文案需要同时修改两个文件。布局根据语言切换 html 的 lang 与 dir,并使用 Tailwind 的逻辑方向类(ms-*、pe-*、start-*、text-end)实现 RTL 镜像。若要新增语言,需要在 src/i18n/routing.ts 注册、创建对应 messages 文件,并在 src/i18n/getDirection.ts 中登记书写方向。
项目结构按职责划分:src/app/[locale] 存放布局与首页组合,src/features/home 按页面区块拆分目录,src/components 收纳通用 UI、图标与 Logo 等组件,src/i18n 处理路由与方向,src/lib/api 是唯一包含 fetch 与接口地址的位置,src/services 存放 TanStack Query 钩子。联系表单的数据流为 ContactForm(React Hook Form + Zod)→ useContactForm → useSendContactMessage → contactApi.send。
联系表单通过环境变量 NEXT_PUBLIC_API_BASE_URL 指向接收 POST /contact(载荷为 name、email、message)的后端;该变量留空时表单不发送请求,只在本地接受输入并展示成功状态。模板依赖已锁定到精确版本并提交了 yarn.lock。README 中提到的演示站点与截图来自 aniq-ui.com,属于第三方素材,需按各自许可单独核对,不能仅凭代码的 MIT 许可判断可用性。
适合你的项目吗?
适用场景
- 搭建创意机构或设计工作室的作品集落地页
- 需要一个同时支持英语与阿拉伯语 RTL 的展示型站点
- 为联系表单接入自有 POST /contact 后端接口
- 作为 Next.js 多语言项目的结构参考,按区块拆分首页组件
适合人群
- 熟悉 Next.js App Router 与 TypeScript 的前端开发者
- 需要双语(含 RTL)作品集模板的创意团队
- 希望自行接入联系表单后端接口的项目
- 接受极简粗野主义视觉风格的使用者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Node.js 18.17 或更高版本,并使用 Yarn(可通过 corepack enable 启用)
- 2
执行 yarn install 安装依赖,可选地复制 .env.example 为 .env.local
- 3
开发服务器启动后访问 / 会重定向到 /en,/ar 为阿拉伯语版本
- 4
如需接收联系表单提交,在 .env.local 中配置 NEXT_PUBLIC_API_BASE_URL;留空则表单仅在本地展示成功状态
- 5
新增语言需同时修改 src/i18n/routing.ts、messages 目录与 src/i18n/getDirection.ts
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 联系表单默认不发送数据;只有配置 NEXT_PUBLIC_API_BASE_URL 指向自建后端(接收 POST /contact,载荷 name、email、message)时才会真正提交,否则仅在本地展示成功状态。
- README 中的在线演示与详情页指向第三方站点 aniq-ui.com,其演示素材与截图不随 MIT 代码许可一并授权,需单独核对其许可。
- 支持渠道为外部站点 aniq-ui.com 的联系入口,非仓库内支持,使用前需自行评估该外部服务的可用性与条款。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
Leave empty to run without a back-end: the form then accepts the message locally and shows its success state.
README 原文
Live demo and details: [aniq-ui.com MONO Template](https://www.aniq-ui.com/en/templates/creative-agency-portfolio-nextjs-template)
README 原文
https://github.com/MohamedDjoudir/landing-page-template-1/blob/main/LICENSEhttps://github.com/MohamedDjoudir/landing-page-template-1/blob/main/README.mdFor questions or support, contact the [Aniq UI team](https://www.aniq-ui.com/#contact).
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: 7bbeeb94817b1cd1dd3322d476f8cfaf33916bc10ed5496b63aa6e5a4e97bcba
2026-10-03T13:49:39.071Z
来源文件 / 仓库# MONO - Creative Agency Portfolio Template
**MONO** is a minimal, brutalist portfolio template built with **Next.js 15**, **TypeScript** and **Tailwind CSS**, available in **English** and **Arabic** (RTL).
Live demo and details: [aniq-ui.com MONO Template](https://www.aniq-ui.com/en/templates/creative-agency-portfolio-nextjs-template)
---
## Getting Started
Requirements: Node.js 18.17 or later and Yarn (`corepack enable`).
```sh
yarn install
cp .env.example .env.local # optional, see Environment
yarn dev
```
Open the dev server URL: `/` redirects to `/en`, and `/ar` serves the Arabic (right-to-left) version.
| Script | Purpose |
| ---------------- | -------------------------- |
| `yarn dev` | Start the dev server |
| `yarn build` | Production build |
| `yarn start` | Serve the production build |
| `yarn lint` | Run `next lint` |
| `yarn typecheck` | Run `tsc --noEmit` |
Every dependency is pinned to an exact version and `yarn.lock` is committed.
---
## Environment
| Variable | Purpose |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `NEXT_PUBLIC_API_BASE_URL` | Base URL of the API that receives the contact form (`POST /contact` with `{ name, email, message }`). Leave empty to run without a back-end: the form then accepts the message locally and shows its success state. |
---
## Languages
- Locales: `en` (default) and `ar`, routed as `/en` and `/ar`.
- Messages live in `messages/en.json` and `messages/ar.json`. Every visible string, aria-label, alt text and the page metadata comes from these files, so add a key to both files together.
- `<html lang dir>` follows the locale, and the layout uses logical Tailwind classes (`ms-*`, `pe-*`, `start-*`, `text-end`) so it mirrors under RTL.
- To add a locale, add it to `src/i18n/routing.ts`, create `messages/<locale>.json`, and register its direction in `src/i18n/getDirection.ts`.
- The header holds a `LocaleSwitcher` (`src/components/LocaleSwitcher`).
---
## Project Structure
```
messages/ # en.json, ar.json
src/
├── app/[locale]/ # layout.tsx (html, providers, metadata) and page.tsx (home composition)
├── components/ # Shared components
│ ├── ui/ # Button, Card, Input, Textarea, Badge, SectionHeader, field parts
│ ├── icons/ # Brand SVG icons
│ ├── Logo/ LocaleSwitcher/ FloatingCursor/ NoiseBackground/ TextGenerateEffect/
├── features/home/ # One folder per page section
│ └── <Section>/ # index.tsx + components/ hooks/ constants/ types/ utils/ (as needed)
├── i18n/ # routing, request config, navigation helpers, direction
├── layouts/ # Navbar and Footer
├── lib/
│ ├── api/ # The only place with fetch and endpoint URLs
│ └── utils.ts # cn() helper
├── providers/ # ThemeProvider, QueryProvider
├── services/ # TanStack Query hooks (services/contact/hooks/mutations)
├── styles/ # globals.css
├── types/ # Shared types (ApiResponse, ContactPayload)
└── middleware.ts # Locale routing
```
Conventions: one component per file with an `index.ts` barrel, one hook per file, one helper per file, constants hold keys, routes, icons and numbers only (text lives in the message files).
### Contact form data flow
`ContactForm` (React Hook Form + Zod, messages translated) -> `useContactForm` -> `useSendContactMessage` (`src/services/contact`) -> `contactApi.send` (`src/lib/api/contact.ts`).
---
## Tech Stack
| Technology | Purpose |
| --------------------- | ------------------------------- |
| Next.js 15 | React framework with App Router |
| next-intl | Localisation and locale routing |
| TypeScript | Type safety |
| Tailwind CSS | Utility-first styling |
| Motion | Animations |
| TanStack Query | Mutations and server state |
| React Hook Form + Zod | Forms and validation |
| Lucide React | Icons |
| next-themes | Theme management |
---
## Support
For questions or support, contact the [Aniq UI team](https://www.aniq-ui.com/#contact).
## License
MIT License, see the [LICENSE](LICENSE) file.
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 · 启动器
