# 卓米会小程序 微信原生小程序 + 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 合法域名。 - 修改管理后台默认密码;数据量大时换成正式数据库。 - 在小程序后台填写《用户隐私保护指引》(昵称、头像、手机号、位置)。