基于 Next.js 构建的工具导航与问卷应用。当前项目已经从纯静态站升级为 Next.js 服务端模式,用于支持共享工具目录、自动发现工具页面、菜单后台管理、固定保存配置,以及后续小程序共用数据和 AI 分析扩展。
- Next.js 15 App Router
- React 19
- TypeScript
- Node.js 服务端 API
- JSON 共享数据目录,供网站和小程序读取同一套工具配置
| 工具 | 路径 | 说明 |
|---|---|---|
| Markdown HTML Renderer | /tools/markdown-html-renderer.html |
Markdown 预览、Mermaid 渲染、独立 HTML 导出 |
| 成人性生活满意度统计表 | /tools/成人性生活满意度统计表.html |
面向成年人,用五级量表统计亲密关系满意度、沟通舒适度和改善方向 |
| 高一兴趣爱好采集表 | /tools/高一女生兴趣爱好采集表.html |
适合高中女生填写的兴趣、学科、技能与未来探索采集表,可预览并导出 CSV |
| 暑期旅游兴趣点采集表 | /tools/暑期旅游兴趣点采集表.html |
用多选、李克特五级量表和重要性排序采集旅游偏好,并生成初步旅游地点画像 |
| 家务抽奖大转盘 | /tools/家务抽奖大转盘.html |
粘贴人员和家务两列表格,用转盘动画随机生成家务分配结果 |
当前页面版本:
v1.0.3
v1.0.3:新增家务抽奖大转盘工具,支持粘贴两列表格并随机分配人员与家务。v1.0.2:区分门户版本和工具独立版本;工具页页脚显示具体工具名称与版本;工具目录 API 增加version字段。v1.0.1:简化为一级顶部菜单;为所有工具页注入顶部版本号和底部版本页脚;为工具页导航脚本添加版本参数以刷新缓存。v1.0.0:Next.js 工具门户、共享工具目录、菜单管理、一级顶部导航、页面版本标识、Coolify Node/Nixpacks 部署配置。
html-tools/
├── app/
│ ├── api/
│ │ ├── menu/route.ts # 保存菜单排序和隐藏配置
│ │ └── tools/route.ts # 扫描 public/tools/*.html
│ ├── menu-admin/page.tsx # 菜单管理页
│ ├── layout.tsx
│ ├── page.tsx # 首页导航
│ └── globals.css
├── data/
│ ├── tools.json # 网站/小程序共用的工具目录
│ └── menu-config.json # 固定保存的菜单排序和隐藏配置
├── lib/
│ └── data.ts # 扫描工具页、读写配置
├── public/
│ └── tools/ # 工具 HTML 页面
├── docs/
├── next.config.ts
├── package.json
└── README.md
npm install
npm run dev打开:
http://localhost:3000
菜单管理:
http://localhost:3000/menu-admin
npm run build
npm run start生产服务默认端口:
3000
优先在共享工具目录添加元数据:
data/tools.json
如果工具是网页专用页面,再将对应单页 HTML 放入:
public/tools/
例如:
public/tools/新问卷.html
刷新首页即可。/api/tools 会优先读取 data/tools.json,并自动补充扫描到但尚未登记的 public/tools/*.html。
/api/tools 返回结构适合小程序直接消费:
{
"schemaVersion": 1,
"tools": []
}工具条目中的 platforms.miniProgram 和 miniProgramPath 用来标记后续小程序是否有原生页面。
删除对应文件:
public/tools/某个页面.html
刷新首页后菜单会自动更新。
访问 /menu-admin 可以:
- 调整菜单顺序
- 隐藏/显示工具
- 恢复默认
- 保存配置到
data/menu-config.json
保存路径固定:
data/menu-config.json
扫描路径固定:
public/tools/*.html
本项目现在需要 Node/Next 服务,不再是纯静态部署。
| Coolify 配置项 | 值 |
|---|---|
| Build Pack | Nixpacks / Node |
| Build Command | npm run build |
| Start Command | npm run start |
| Port | 3000 |
如果需要在线修改菜单并在重启/重部署后保留,请为以下目录配置持久化 Volume:
data/
- 每个工具放在
public/tools/<tool-name>.html - 工具元数据保存在
data/tools.json - 菜单排序和隐藏配置保存在
data/menu-config.json - 需要多人数据、AI 分析、小程序共用数据或在线保存时,优先通过 Next.js API 扩展
- AI API Key 不应放在前端,应放在服务端环境变量中