已稳定运行 3+ 年 · 最后更新:2026年5月10日
督友 DuYou
一款为“强迫症”设计的轻社群自律监督应用。
采用 混合云架构,核心解决弱网 / 断网环境下的数据确定性问题。
产品内核与规划
“有人盯,才坚持;坚持着,就遇见”
隐私优先
习惯内容、目标与进度仅自己可见。在群组内仅同步“已打卡/未打卡”状态,既保护隐私,又利用社交压力形成强约束。
双社交场景
结合熟人社交的高粘性监督与陌生人社交的兴趣匹配,把“变好”和“交友”深度绑定。
演进路线图
阶段 01 / MVP
极简自用版
- • 私密习惯管理
- • 日历热力图统计
- • 微信群机器人同步
阶段 02 / 社交化
兴趣社交化
- • 熟人小群 / 兴趣群
- • 补签卡 / 连胜保护
- • 属性勋章系统
阶段 03 / 商业化
商业化探索
- • 保证金挑战赛
- • 个性化增值服务
- • 高端行业 / 兴趣圈子
API 优先
RESTful 架构 / Spring Boot 驱动
自动降级
弱网环境下 0 感知切换本地存储
云端托管
微信云托管容器化部署 / MySQL 持久化
系统架构设计
“架构的价值不仅仅在于功能的实现,更在于系统在极端边界情况下的鲁棒性。”
01 用户界面层
原生微信小程序开发,包括首页打卡、习惯管理、多维统计及个人中心,目标是实现稳定顺滑的高频交互。
02 存储与中间件层
核心策略是 API 优先加本地缓存双模式,通过统一的 storage.js 屏蔽读写细节,保证离线时的数据连续性。
03 基础设施层
基于微信云托管部署,后端采用 Spring Boot 微服务,数据库使用云托管 MySQL,兼顾扩展性与稳定性。
应用界面(小程序)
API 客户端
本地存储
微信云托管容器
SPRING BOOT + MYSQL
核心逻辑:自动降级机制
当 API 请求失败(由于网络波动或环境异常)时,系统会自动切换至本地持久化层。
utils/storage.js
// 网络请求失败时自动降级
async function getHabits() {
if (useApi) {
try {
const habits = await api.getHabits();
wx.setStorageSync('habits', habits); // 成功后同步缓存
return habits;
} catch (error) {
console.warn('API 访问失败,自动回退到离线模式');
return wx.getStorageSync('habits') || []; // 离线降级
}
}
return wx.getStorageSync('habits') || [];
}