Add 卓米会 mini program and admin server.

Initial commit of the WeChat mini program, Express backend, and admin console.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Michelle Zan
2026-09-29 19:01:36 +08:00
co-authored by Cursor
commit cd05113755
67 changed files with 4845 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
# 卓米会小程序
微信原生小程序 + 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` 登录;不配置则为演示登录 |
| `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 合法域名。
- 修改管理后台默认密码;数据量大时换成正式数据库。
- 在小程序后台填写《用户隐私保护指引》(昵称、头像、手机号、位置)。