小i约球诞生记-开篇:不只是个“附近球友”列表
本文是「小i约球诞生记」系列文章之一。
小i约球是一个微信小程序,主要帮乒乓球、羽毛球、台球、网球爱好者找到附近合适的球友。本文从一个具体技术或产品问题切入,记录约球小程序从 0 到 1 过程中的设计取舍。
官网:https://iyueqiu.cn 小程序:微信搜索「小i约球」
前言
一开始做小i约球的时候,我以为它会很简单。
用户发布一条约球信息,带上球类、位置和备注。其他人打开小程序,看附近有没有人想打球。听起来就是一个“附近的人 + 信息发布”的小工具。
但真正做下去以后,发现事情没那么简单。
找球友不是一个普通的信息流问题。它同时受位置、时间、项目、水平、信任、触达方式影响。用户今天没有匹配到合适的人,不代表以后没有需求;附近来了新球友,用户也不可能每天主动打开小程序检查。
所以这个项目慢慢从一个列表页,变成了一套围绕“附近球友匹配”的小系统。
为什么会做这个产品
双人球类运动有一个很现实的问题:你想打,但你一个人打不了。
乒乓球、羽毛球、台球、网球都属于这种类型。和跑步、骑车、健身不同,这些运动天然需要另一个人。
而且这个人还不能太随机。最好离你不远,时间能对上,项目一致,水平也差不多。
很多人会选择加球友群。但群也不是万能的。群里可能有几百个人,真正说话的就几个;你发一句“今晚有人打吗”,可能没人回;有人回了,一问地点,一个在城东,一个在城西。
我做小i约球的出发点,就是想解决这个非常具体的问题:让附近想打球的人更容易互相发现。
最初以为的产品形态
最开始我想象中的产品闭环很短:
发布约球信息,附近的人看到,打招呼联系,最后约成一场球。
如果只是做一个 demo,这个模型确实够了。
但要让它真正可用,很快会遇到一堆问题:
- 用户不授权定位怎么办?
- 附近没人时首页展示什么?
- 用户发布新名片后,附近老用户怎么知道?
- 约球信息是长期有效,还是只对今天晚上有效?
- 用户不每天打开小程序,匹配结果怎么触达?
- 群聊、公众号、小程序之间怎么配合?
- 用户发布的内容和私信是否需要审核?
- 分享出去的卡片怎么让别人愿意点开?
- 本地生活产品冷启动时,如何避免用户打开后发现“空城”?
这些问题叠在一起,它就不再是一个简单 CRUD 小程序了。
当前总体架构
下面这张图是当前比较核心的架构拆分。
整体上,我把它拆成四层。
第一层是 微信小程序端。 这里承载用户能直接感知到的功能,包括附近球友、发布名片、快速约球、消息评论、Canvas 分享等。
第二层是 云函数层。 小程序端不直接处理复杂业务,而是通过云函数完成用户、匹配、通知、问答等逻辑。这样做的好处是前端保持相对轻,敏感逻辑也不会暴露在端上。
第三层是 云数据库。 核心数据包括用户、约球名片、快速约球、消息、本地群等。这里最关键的是 `information`,也就是约球名片,它是附近匹配、公众号提醒、分享传播的基础数据。
第四层是 外部能力。 这个项目大量依赖微信生态能力,比如微信定位、公众号消息、企业微信群、内容安全检测,以及小程序 Canvas 绘图。
核心产品思路
小i约球的核心不是“发帖”,而是“持续匹配”。
我最后把它拆成了几个关键动作。
第一,用户先留下约球名片。
名片不是一条很快沉掉的动态,而是一个长期有效的找球友入口。里面包含球类、位置、备注和用户信息。
第二,通过 LBS 找附近的人。
位置不能只存文本地址,必须存经纬度。只有这样,后面才能做附近查询、距离排序、地图点位展示。
第三,匹配结果不能只等用户主动打开。
找球友是低频需求。用户不会每天打开小程序看附近有没有新人。所以发布名片时,系统会把附近可能相关的人找出来,后续通过公众号消息触达。
第四,长期名片和临时约球要分开。
“我长期想找附近球友”和“今晚 8 点有人打吗”不是一类需求。前者适合做约球名片,后者适合做带过期时间的快速约球。
第五,群聊是补充,不是入口。
群适合即时沟通,但不适合结构化检索。小程序负责把人和需求匹配起来,企业微信群负责承接最后的即时沟通。
技术复杂度主要来自哪里
这个项目真正复杂的地方,不是某一个单点技术特别难。
LBS 查询、云函数、模板消息、Canvas 绘图,单独看都不算夸张。真正麻烦的是,这些能力必须围绕一个真实业务场景串起来。
比如:
- 定位失败时要有降级方案
- 附近匹配既要支持列表,也要支持地图点位
- 发布名片后不能频繁打扰用户,所以需要队列和定时任务
- 公众号 `access_token` 需要统一刷新和缓存
- 快速约球需要自动过期
- 分享卡片要能表达“谁、在哪、打什么球”
- 企业微信群不能替代小程序,只能作为即时沟通补充
- 内容发布和私信都要接入安全审核
这些细节,都是一开始容易低估的地方。
总结
小i约球最开始看起来只是一个“附近球友列表”。
但真正做起来以后,它变成了一个由小程序、云函数、云数据库、公众号、企业微信、LBS、定时任务、内容安全和分享增长共同组成的小系统。
这也是我想记录的东西:一个看起来很简单的本地生活小程序,实际落地时会牵出哪些技术问题。
---
项目官网:https://iyueqiu.cn 微信小程序:搜索「小i约球」