Skip to content

Repository files navigation

不一样的日记

一个不催促、不打分,也不拿连续记录绑住你的本地优先生活日记。

CI GitHub Pages Release License: MIT

直接在线体验 · 下载单文件版 · 查看 v0.1.0 · 参与贡献

不一样的日记:你这会儿,想从哪儿说起?

为什么做它

还在为每天记录运动发愁?还在为了减肥、排名,把自己卷得够呛?担心吃多了会收到警告,运动不达标会被提醒,漏记一天又被催?来试试《不一样的日记》。

不想运动?没关系。只想坐着打游戏?也没关系。上班已经够消耗人了,就让健身达人们自己去卷吧。想吃一顿大餐,又想留下当时的状态?放心拍下来,先放在自己的设备里。图片问大模型和宽松热量估算会在后续版本加入;当前版本已经支持可选的文字 AI,而且只有你主动发送时才会请求 OpenRouter。

这个产品不会因为你吃了、歇了、漏记了,就跳出来警告你。作者是一边喝着全糖可乐,一边吃着汉堡王三层皇堡,一边把它搓出来的。

反内卷。

它现在能做什么

  • 从“想吃”“不想练”“刚练完很累”或“只是来坐坐”开始,先得到一句人工写好的本机回应。
  • 记录文字、照片和运动;运动类型、时长、步数、距离与备注全部可以跳过。
  • 按时间回看记录,单条删除、彻底清空,或导出 JSON 副本。
  • 把今天保存过的状态与选择排成一张 3:4 PNG 海报。
  • 自愿连接 OpenRouter Key,在明确确认后让 AI 回应当前文字;模型不可用或越过非审判规则时自动回到本机回应。
  • 安装为 PWA;不登录、不连接 Key 时,基础体验依然完整可用。

真实界面

从现在的状态开始 先回应,再决定是否记录 最近发生的事只留在本机
不一样的日记首页四个状态入口 想吃点东西后的非审判回应 保存在本机的最近记录

隐私边界

身份、日记、照片与运动记录默认保存在当前浏览器的 IndexedDB 中。照片“只记录”时不识别、不上传;今日海报在浏览器里生成。OpenRouter Key 只留在当前页面内存中,只有用户点击发送后,当前状态、选择、本机回应和刚写的文字才会交给 OpenRouter。照片、历史记录、运动详情和身体资料不会随当前文字请求发送。

没有账户,没有云端副本,也没有遥测。清理浏览器数据、卸载应用或更换设备前,请先导出需要保留的记录。

使用

  1. 打开在线体验页,从首页挑一句最接近当前状态的话。
  2. 选择这会儿希望怎样被陪伴,读完回应后可以直接离开,也可以留下文字、照片或运动记录。
  3. 从首页“翻翻最近”回看和管理本机数据;有了当天记录后,也可以生成今日海报。
  4. 想让 AI 再听听时,从回应页进入可选 AI,自行连接 OpenRouter Key,并在发送前再次确认。

手机浏览器可以把页面添加到主屏幕,之后像普通 App 一样打开。

如何把它装成 PWA

PWA 可以理解成“能装到桌面的网页”:不用经过应用商店,也不用下载安装包。先用浏览器打开网址,再把它添加到主屏幕,以后就能像普通 App 一样从桌面图标进入。

iPhone / iPad

  1. 一定要用 Safari 打开网址。
  2. 点底部工具栏的“分享”按钮;如果没看到,先点“更多”,再点“分享”。
  3. 在菜单里找到“添加到主屏幕”。
  4. 打开“作为网页 App 打开”,然后点“添加”。

Android 手机

  1. Chrome 打开网址。
  2. 点右上角的三个点。
  3. 选择“添加到主屏幕”,再点“安装”。有些手机会直接显示“安装应用”。

电脑

用 Chrome 打开网址,点右上角三个点,进入“投放、保存和分享”,选择“将网页安装为应用”。部分版本也会直接在地址栏右侧显示安装图标。

第一次打开仍需要网络。页面成功加载后,应用外壳可以离线打开;记录保存在安装时所用的浏览器和设备里,清理浏览器数据或卸载前请先导出需要保留的内容。

系统更新后,菜单名称可能略有变化。可以对照 Apple 的官方说明Chrome 的官方说明

下载一个 HTML 文件离线打开

如果不想安装 PWA,也可以下载一个完整的 HTML 文件。它不需要解压,放在电脑里,双击就能打开:

打开下载与说明页面,再点击页面里的“下载 HTML 文件”。

Windows 下载后,在“下载”文件夹双击它;如果系统询问用什么打开,选择 Chrome 或 Edge。Mac 下载后,在 Finder 的“下载”里双击;如果被文本编辑器打开,右键文件,选择“打开方式”,再选 Safari 或 Chrome。

下载版适合电脑离线使用。请把文件固定放在一个文件夹里,不要频繁改名或移动;浏览器可能会把不同文件路径当成不同的本机空间。下载版不能安装成 PWA,AI 联网也可能被浏览器限制;手机使用和 AI 功能优先选择上面的在线体验页。

当前技术栈

层级 实现
界面 React 19 + TypeScript
构建 Vite 8;开发、测试和 GitHub Pages 使用同一条静态应用链路
本机数据 IndexedDB + Dexie,包含原地版本迁移
PWA Web App Manifest + 同源 Service Worker
测试 Node Test Runner + tsx + fake-indexeddb,另做手机尺寸浏览器验收
可选 AI OpenRouter 文字接口;Key 只留在当前页面内存
发布 GitHub Actions → GitHub Pages,同时生成单文件 HTML

本地开发

需要 Node.js 22.15 或更高版本。

npm ci
npm run dev

完整验证:

npm run lint
npm test
npm run build:pages

想接手继续开发

想把项目拿走继续做,可以先在 GitHub 右上角点 Fork,把仓库复制到自己的账号,再把自己的副本下载到电脑:

git clone https://github.com/你的用户名/different-diary.git
cd different-diary
npm ci
npm run dev

页面入口在 app/page.tsx,实际职责按控制器、产品文案、首页、对话页和本机记录页拆在 app/diary/;本机文字与数据库在 lib/stage1/,照片、运动、可选 AI 和今日海报依次在 lib/stage2/lib/stage3/lib/stage4/lib/poster/;回归测试在 tests/,产品、技术和架构说明在 docs/。浏览器入口位于 github-pages/,构建配置集中在 vite.config.ts

每次修改后,至少运行:

npm run lint
npm test
npm run build:pages

在自己的 GitHub 仓库中启用 Actions,并在 Settings → Pages 里选择 GitHub Actions,之后把通过检查的代码合并到 main,现有工作流就会自动发布网页和单文件下载版。如果更改了仓库名,需要同时修改 package.jsonbuild:pages --basescripts/build-standalone-html.mjs 中的 basePath,以及 README、下载页和分享图里的公开链接。

接手开发时请继续守住三个边界:无登录、无 Key 的基础路径必须可用;照片“只记录”不能调用模型或上传;数据库结构或导出格式发生变化时,要为已有本机记录提供迁移和回归测试。准备贡献回原项目时,再阅读 CONTRIBUTING.mddocs/05-开放扩展接口规范.md

项目原则

  • 诚实记录不会受到惩罚。
  • 不用红色警告、失败评分、连续天数或补偿性运动制造压力。
  • 登录、身体资料与模型 Key 都是可选项;无登录、无 Key 路径必须完整。
  • AI 和云同步是可选适配器,不成为应用启动或核心体验的依赖。
  • 照片是否交给模型,由用户在具体动作发生前决定。

当前状态

截至 2026-07-11,手机端核心陪伴、本机文字与照片记录、本机运动记录、时间线与数据管理、PWA、可选文字 AI、新手引导和今日海报均已通过用户体验验收。图片理解、运动消耗估算、Key 的本机加密长期保存、照片 ZIP 导出与本机图表仍是后续计划,不属于当前版本。

产品与技术边界见 docs/;开放扩展原则见 docs/05-开放扩展接口规范.md。为避免已有用户的本机记录在品牌改名后看起来消失,数据库与部分内部存储标识暂时保留早期名称。

版本变化见 CHANGELOG.md

参与贡献

欢迎修复问题、补测试、改善无障碍体验,或提出符合非审判原则的新功能。提交前请阅读 CONTRIBUTING.md。安全问题请不要公开披露,处理方式见 SECURITY.md

License

Copyright (c) 2026 Keming Ou. 本项目基于 MIT License 开源。

About

一个不催促、不打分、反内卷的本地优先生活日记

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages