Files
zhuomi-hui/README.md
T
Michelle ZanandCursor 0ca2e87bf2 Ship signup sheet, subscribe reminders, cover crop, and theme updates.
Wire real WeChat app config, prefer activity cover over posters, and add admin cover cropping for the home banner.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-08 13:06:43 +08:00

69 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 卓米会小程序
微信原生小程序 + Node.js 后端(含管理后台)。
```
miniprogram/ 小程序(WXML / WXSS / JS),用微信开发者工具导入
server/ Express 后端 + 管理后台,数据存 server/data/db.json
```
## 快速开始
```bash
cd server
npm install
npm start # http://localhost:3000,管理后台 /admin
npm test # 接口冒烟测试(使用临时数据库,不影响真实数据)
```
1. 微信开发者工具导入 `miniprogram/`,详情 → 本地设置 → 勾选「不校验合法域名」。
2. 小程序请求地址在 `miniprogram/config.js`(默认 `http://127.0.0.1:3000`)。
3. 管理后台默认账号 `admin / 123456`,上线前务必在后台修改密码。
## 环境变量
| 变量 | 说明 |
| --- | --- |
| `PORT` | 端口,默认 3000 |
| `WX_APPID` / `WX_SECRET` | 配置后走真实 `code2session` 登录;不配置则为演示登录 |
| `WX_SUBSCRIBE_TMPL_ID` | 可选,订阅消息模板 ID(也可在管理后台「提醒设置」里填) |
| `WX_MINI_STATE` | 订阅消息跳转版本:`formal` / `trial` / `developer`,默认 formal |
| `DB_FILE` | 数据文件路径,默认 `server/data/db.json` |
| `UPLOAD_DIR` | 上传目录,默认 `server/public/uploads` |
## 功能对照
- **可转发**:活动页 `onShareAppMessage` 分享到详情页,链接带分享人 openid,报名时记录来源。
- **可编辑**:后台增删改活动(含往期、置顶、封面图、视频)、海报、报名、签到码。
- **可数据统计**:后台「数据统计」看报名/签到/分享来源,报名可导出 CSV。
- **可微信登录**:`wx.login` → `/api/login` → `code2session`。
小程序管理员只在后台「管理员」页设置;管理员在「往期」页直接看到增加、删除、置顶,界面上没有管理员登录入口。
## 目录说明
```
server/
app.js Express 应用(路由挂载、静态资源、统一错误处理)
server.js 启动入口
routes/public.js 小程序接口 /api/*
routes/admin.js 管理后台接口 /api/admin/*
lib/db.js JSON 存储:内存缓存 + 原子写入 + 旧数据迁移
lib/auth.js 用户 / 管理员鉴权
lib/passwords.js 管理员密码 scrypt 哈希
lib/serialize.js 活动 / 用户数据整形
lib/upload.js 图片视频上传(multer)
lib/wechat.js code2session
public/admin.html 管理后台单页
miniprogram/
utils/api.js 所有接口封装(自动登录、token 过期自动重登)
utils/activity.js 导航、报名跳转、分享参数
components/activity-board 首页 / 详情页共用的活动卡片
```
## 上线前
- 服务器配置 HTTPS 域名,并在小程序后台添加 request / uploadFile / downloadFile 合法域名。
- 修改管理后台默认密码;数据量大时换成正式数据库。
- 在小程序后台填写《用户隐私保护指引》(昵称、头像、手机号、位置)。