记录每天的起床时间,而不是强迫自己早起。极简、克制、可安装的 PWA。
在线预览:Vercel 部署后填入链接
- 今日打卡 — 一键记录本地时间,已打卡防重复,可修改时间
- 月历 — 周一开头,达成/接近/晚起/未打卡(颜色+文字+点),点日期补卡/编辑/删除,
补角标区分来源 - 统计 — 本月已/未打卡、平均/最早/最晚、当前/最长连续、稳定性 ±分钟(标准差)
- 趋势图 — 横轴日期纵轴时间,Recharts 折线+散点,悬停/触摸良好,空状态优雅
- 目标 — 默认 07:30,设置页可改,全局生效
- 云同步 — Cloudflare D1 存储,打开即自动合并,无需登录;设置页可手动同步/导入导出 JSON
- PWA — manifest + Workbox SW + 离线可用 + 可添加到主屏幕
React 18 · TypeScript strict · Vite 6 · React Router 6 · idb (IndexedDB) · date-fns · Recharts · vite-plugin-pwa
本地数据存 IndexedDB(刷新不丢、离线可用),打开页面时自动与 Cloudflare D1 合并,utils/date.ts 是唯一时间出口(跨天以 00:00 为界)。
npm install
npm run dev # http://127.0.0.1:5199
npm run build # 生成 dist + PWA
npm run preview- Cloudflare Dashboard → Workers & Pages → Create → Workers → Connect to Git → 选
CodeAlex52/wake-log - 先建 D1 数据库:Storage & databases → D1 → Create database,命名为
wake-log-db,复制 Database ID - 把 Database ID 填入项目根目录
wrangler.jsonc的database_id - Build command:
npm run build;Deploy command:npx wrangler deploy - 绑定自定义域后,PWA 安装与离线可用
Vercel → New Project → 选仓库 → 框架 Vite → Deploy(保留 vercel.json)。
src/
app/ 路由与根组件
pages/ Today / Calendar / Stats / Settings
components/ TimePicker / TrendChart / EmptyState
layouts/ AppShell(Header + BottomNav)
hooks/ useRecords / useSettings
services/ wakeService(业务层)
repositories/ db / wakeRepo / settingsRepo(可替换为 API)
models/ 类型定义
utils/ date / stats
styles/ tokens / global
MIT License — 详见 LICENSE。
- v0.2 睡眠时长与关联分析
- v0.3 云端同步已完成,可继续做多设备弱网冲突提示
- v0.4 Java 后端 + PostgreSQL(可选,当前 D1 零成本够用)