本仓库为微信小程序 MVP 实现,核心目标是“撮合匹配”:让热爱跑步的视障跑者能够安全、便捷地找到可靠的陪跑志愿者,完成从活动发布到匹配确认的最小服务闭环。
说明:本 README 摘要整理自《「步步有伴」项目说明书》中的部分内容,PDF 原件不随代码仓库提交。
面向两类核心用户:陪跑志愿者 与 视障跑者。
志愿者端(主动发起)
- 发布陪跑活动:时间、地点(固定公园下拉)、跑步经验要求(有/无)
- 管理活动:查看状态、处理跑者加入申请
- 联络确认:与申请加入的跑者沟通,确认陪跑细节
跑者端(轻松加入)
- 浏览活动列表:按距离远近查看可参与活动(优先取定位)
- 一键加入:申请加入感兴趣的活动
- 查看状态:跟踪申请状态,了解是否匹配成功
- 待同行:志愿者已发布活动,尚无人加入(此时可取消)
- 待联络确认:已有跑者申请加入,等待志愿者联系确认
- 匹配成功待出行:双方已确认,约定共同出行
- 已完成:活动时间已过,系统自动标记为已完成
- 已取消:志愿者取消活动(操作包含二次确认与善意提醒)
- 产品形态:微信小程序
- 地点选择方案:不接入第三方 POI 搜索,使用固定公园列表下拉选择(北京 5 个跑步公园)
- 匹配因素:MVP 阶段仅考虑跑步经验(有/无),暂不引入配速等高阶维度
- 无障碍考虑:按钮更大、关键信息更易被朗读;交互尽量简单直接
.
├── cloudfunctions
│ ├── activity # 活动相关云函数(create/list/get/apply/withdraw/confirm/cancel/autoComplete)
│ └── login # 获取 openid
├── miniprogram
│ ├── pages
│ │ ├── login # 登录/注册(身份、手机号、跑步经验)
│ │ ├── home # 首页入口(按身份展示)
│ │ ├── my # 我的资料 + 我的报名/我发布的活动 + 退出
│ │ ├── volunteer # 志愿者:发起/列表/详情(联络确认、取消)
│ │ └── runner # 跑者:附近活动/详情(加入、撤回)
│ └── utils
│ ├── db.js # 数据访问层(云开发优先;游客/无云自动降级到本地 storage)
│ ├── constants.js # 固定公园/身份枚举
│ ├── status.js # 状态文案与标签样式映射
│ └── location.js # 距离计算与展示
└── project.config.json # 微信开发者工具项目配置
适合快速验证页面与流程,不依赖云函数/云数据库。
- 使用微信开发者工具导入项目根目录
- 直接点击「编译」
- 登录后按以下流程体验:
- 志愿者:发起活动 → 管理活动 → 详情查看申请人/联络确认/取消
- 跑者:附近活动(允许定位)→ 加入 → 我的报名查看状态
数据会写入本地 storage(清缓存/换设备会丢)。
- 开通并绑定云开发环境
- 上传并部署云函数:
login、activity - 创建云数据库集合:
users、activities(按团队安全策略配置读写权限)
启用后,小程序会自动优先走云函数/云数据库;若云环境不可用则降级为本地存储。