Skip to content

Repository files navigation

Wake Log — 早起打卡 PWA

记录每天的起床时间,而不是强迫自己早起。极简、克制、可安装的 PWA。

PWA TypeScript License

在线预览:Vercel 部署后填入链接

✨ 功能(MVP)

  • 今日打卡 — 一键记录本地时间,已打卡防重复,可修改时间
  • 月历 — 周一开头,达成/接近/晚起/未打卡(颜色+文字+点),点日期补卡/编辑/删除,补 角标区分来源
  • 统计 — 本月已/未打卡、平均/最早/最晚、当前/最长连续、稳定性 ±分钟(标准差)
  • 趋势图 — 横轴日期纵轴时间,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 Workers(推荐)

  1. Cloudflare Dashboard → Workers & Pages → Create → Workers → Connect to Git → 选 CodeAlex52/wake-log
  2. 先建 D1 数据库:Storage & databases → D1 → Create database,命名为 wake-log-db,复制 Database ID
  3. 把 Database ID 填入项目根目录 wrangler.jsonc 的 database_id
  4. Build command: npm run build;Deploy command: npx wrangler deploy
  5. 绑定自定义域后,PWA 安装与离线可用

Vercel(同样支持)

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 零成本够用)

About

早点起床

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages