[ PROMPT_NODE_23050 ]
scaffolding
[ SKILL_DOCUMENTATION ]
# 项目脚手架
> 新项目的目录结构和核心文件。
---
## Next.js 全栈结构 (2025 优化版)
project-name/
├── src/
│ ├── app/ # 仅路由 (轻量层)
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── globals.css
│ │ ├── (auth)/ # 路由组 - 认证页面
│ │ │ ├── login/page.tsx
│ │ │ └── register/page.tsx
│ │ ├── (dashboard)/ # 路由组 - 后台布局
│ │ │ ├── layout.tsx
│ │ │ └── page.tsx
│ │ └── api/
│ │ └── [resource]/route.ts
│ │
│ ├── features/ # 基于功能的模块
│ │ ├── auth/
│ │ │ ├── components/
│ │ │ ├── hooks/
│ │ │ ├── actions.ts # 服务端操作
│ │ │ ├── queries.ts # 数据获取
│ │ │ └── types.ts
│ │ ├── products/
│ │ │ ├── components/
│ │ │ ├── actions.ts
│ │ │ └── queries.ts
│ │ └── cart/
│ │ └── ...
│ │
│ ├── shared/ # 共享工具
│ │ ├── components/ui/ # 可复用 UI 组件
│ │ ├── lib/ # 工具函数
│ │ └── hooks/ # 全局钩子
│ │
│ └── server/ # 仅服务端代码
│ ├── db/ # 数据库客户端 (Prisma)
│ ├── auth/ # 认证配置
│ └── services/ # 外部 API 集成
│
├── prisma/
│ ├── schema.prisma
│ ├── migrations/
│ └── seed.ts
│
├── public/
├── .env.example
├── .env.local
├── package.json
├── tailwind.config.ts
├── tsconfig.json
└── README.md
---
## 结构原则
| 原则 | 实现 |
|-----------|----------------|
| **功能隔离** | 每个功能在 `features/` 中拥有独立的组件、钩子和操作 |
| **服务端/客户端分离** | 仅服务端代码放在 `server/`,防止意外的客户端导入 |
| **轻量路由** | `app/` 仅用于路由,逻辑位于 `features/` |
| **路由组** | 使用 `(groupName)/` 实现布局共享而不影响 URL |
| **共享代码** | `shared/` 用于真正可复用的 UI 和工具 |
---
## 核心文件
| 文件 | 用途 |
|------|---------|
| `package.json` | 依赖管理 |
| `tsconfig.json` | TypeScript + 路径别名 (`@/features/*`) |
| `tailwind.config.ts` | Tailwind 配置 |
| `.env.example` | 环境变量模板 |
| `README.md` | 项目文档 |
| `.gitignore` | Git 忽略规则 |
| `prisma/sche