6f2d836ef5a5cbd02d93bc010c786ca19661cb4f
按用户反馈调整上一批优化: - 左树撤回族组展开层(虚线层+重复名称行):改为一族只显示一行(排序最前的 代表商品),行内「N 个配置」徽标悬浮列出该族全部配置(名称/国家·分类/打开 按钮),不再有额外层级与重复名称 - 右树恢复配置入口:撤回「族已配置拦截」,本链接未单独建商品即显示「配置」 按钮(含族已配置情形,供调整归族/重新配置),拖拽路径同步解除拦截 - 国家模式拖拽排序回退为分组内简单排序(族组节点已不存在) - 文档同步更新徽标/入口语义 验证:admin typecheck + 22/22 + 构建绿;浏览器实测美国分组 25 行一族一行、 「8 个配置」徽标悬浮列表可打开、国内工厂深层成族链接显示「配置」按钮
Inkreach
pnpm workspaces + Turborepo monorepo,包含三个协同工作的子项目和共享包:
| 子项目 | 包名 | 技术栈 | 端口 | 角色 |
|---|---|---|---|---|
apps/api |
@inkreach/api |
NestJS 10 + Prisma 5 + PostgreSQL | 3001 | 后端 API(鉴权 / CRUD / SDS 同步 / 公开 API / Swagger) |
apps/admin |
@inkreach/admin |
Vue 3 + Vite + Element Plus + Pinia | 5173 | 后台管理(登录 / 商品 / 品类 / 国家 / 标签 / 坑位 / 同步) |
apps/website |
@inkreach/website |
Nuxt 4 + Vue 3 + Tailwind v4 | 3000 | 官方展示站 + 产品中心页 |
| 共享包 | 说明 |
|---|---|
packages/tsconfig |
共享 TypeScript 配置(base / api / vue) |
packages/shared-types |
共享类型定义(PaginatedResult, BackendEnvelope, 实体接口) |
快速开始
1. 安装依赖
pnpm install
2. 环境变量
在仓库根目录的 .env 中配置数据库:
DATABASE_URL=postgresql://postgres:<password>@localhost:5432/inkreach-official
后端额外需要的变量(在 apps/api/.env 中):
JWT_SECRET=<your-secret>
SDS_API_BASE=https://api.sds.example.com
SDS_API_KEY=<your-key>
PORT=3001
官网通过 apps/website/.env 的 NUXT_PUBLIC_BACKEND_URL=http://localhost:3001 指向后端。
后台无需额外环境变量;Vite 代理已把 /api/* 转给 http://localhost:3001。
3. 部署
启动顺序:先启动后端,再启动另两个。
# Terminal 1:后端(需要 PostgreSQL)
cd apps/api
pnpm prisma:generate
pnpm prisma:migrate
pnpm --filter @inkreach/api dev
# → http://localhost:3001 · Swagger: http://localhost:3001/api/docs
# Terminal 2:官网
pnpm --filter @inkreach/website dev
# → http://localhost:3000
# Terminal 3:后台
pnpm --filter @inkreach/admin dev
# → http://localhost:5173
或者使用 Turborepo 同时启动所有开发服务器:
pnpm dev # turbo run dev
端口分配
| 端口 | 项目 | 入口 |
|---|---|---|
| 3001 | NestJS 后端 | apps/api/src/main.ts |
| 5173 | Vue Admin | apps/admin/vite.config.ts |
| 3000 | Nuxt 官网 | apps/website/nuxt.config.ts |
数据流概览
[SDS 外部 API]
│ (同步)
▼
[NestJS 后端 :3001] ── public/goods ──► [Nitro 代理 /api/backend/*] ──► [Nuxt 官网 :3000]
│ ▲
├── /auth /goods /categories ... ──► │ Vite proxy /api/*
│ │
[PostgreSQL] [Vue Admin :5173]
常用命令
# 根目录(使用 pnpm workspace filter)
pnpm install # 安装所有依赖
pnpm dev # 启动所有 dev 服务器 (turbo)
pnpm build # 构建所有项目 (turbo)
pnpm format # 格式化所有文件 (prettier)
# 后端
pnpm --filter @inkreach/api start:dev # 开发
pnpm --filter @inkreach/api build # 编译
pnpm --filter @inkreach/api test # 单元测试
pnpm --filter @inkreach/api prisma:generate # 生成 Prisma Client
pnpm --filter @inkreach/api prisma:migrate # 运行迁移
pnpm --filter @inkreach/api prisma:studio # 打开 Prisma Studio
pnpm --filter @inkreach/api backfill:product-families # 产品族回填(解析链接名→自动建族→全量重算,幂等)
# 官网
pnpm --filter @inkreach/website dev # 开发
pnpm --filter @inkreach/website build # 构建
pnpm --filter @inkreach/website generate # 静态站点生成
# 后台
pnpm --filter @inkreach/admin dev # 开发
pnpm --filter @inkreach/admin build # 构建
文档
- 整体目录结构:
docs/references/structs.md - 数据库表设计:
docs/dev/database-table-design.md - 产品中心 PRD:
docs/dev/product-center-prd.md - 官网子项目结构:
apps/website/docs/references/structs.md - 开发规范:
AGENTS.md
Languages
JavaScript
53.3%
TypeScript
21.4%
Vue
10.3%
Shell
9%
Python
3.3%
Other
2.6%