接口基址 https://api.y.sakurumii.top
前端是 PWA,后端是 Worker,接口统一返回 { ok, data } 或 { ok, error }。
React + Vite,构建为 PWA。
Workers + Hono,数据存 D1。
Cron 每 5 分钟巡检。
后端先建表,再启动。
# 后端 cd worker npm install npx wrangler d1 execute wenyabao-db --file=./schema.sql npx wrangler dev # 前端 cd frontend npm install npm run dev
除注册登录外,接口需带 Authorization: Bearer <token>;老人端用设备码识别身份。
/auth/send-code发送邮箱验证码/auth/register验证码注册/auth/login邮箱密码登录/elders/bind老人端绑定设备码/elders家属名下老人列表/elders/me老人端读取本人信息/elders/:id老人详情/elders/:id/today今日用药概览/elders/:id/bind解除绑定/medications/reference用药参考清单/medications新增用药/medications用药列表/medications/:id修改用药/medications/:id删除用药/reminders/ack确认已服药/reminders/pending待确认提醒/reminders/history服药历史记录/messages发送留言/messages留言列表/alerts触发告警(含紧急求助)/alerts告警列表/alerts/:id/ack标记告警已处理/push/subscribe注册 Web Push 订阅/push/test发送测试推送/admin/login管理员登录/admin/stats仪表盘统计/admin/users用户列表/admin/users/:id/status启用 / 禁用用户/admin/users/:id删除用户/admin/elders全部老人/admin/push-logs推送日志/admin/cron-logs定时任务日志/admin/audit-logs审计日志密钥用 wrangler secret put 写入,不进代码与文档。
Worker 端:
JWT_SECRET VAPID_PUBLIC_KEY VAPID_PRIVATE_KEY RESEND_API_KEY PUSHPLUS_TOKEN ADMIN_PASSWORD
前端(构建时注入):
VITE_API_BASE=https://api.y.sakurumii.top VITE_VAPID_PUBLIC_KEY=...
前端部署为 Pages 项目,后端部署为 Worker。
# 前端 cd frontend npm run build npx wrangler pages deploy dist --project-name=wenyabao # 后端 cd worker npx wrangler d1 execute wenyabao-db --file=./schema.sql npx wrangler deploy
域名规划:
www.y.sakurumii.top官网 + 应用(/app/)api.y.sakurumii.top接口服务y.sakurumii.top跳转到 www请求经 Cloudflare 边缘节点进入 Worker,读写 D1;定时任务由 Cron 触发,推送走 Web Push,失败降级 PushPlus。