A local-first Windows study focus app built with Tauri, React, TypeScript and Rust. It helps exam candidates run structured focus sessions, enforce app/site allowlists, review learning records, and optionally sync data across devices.
考研专注 是一个面向 Windows 桌面端的本地学习约束工具,目标是在备考期间把“开始学习、强制白名单、番茄节奏、任务计划、复盘统计、数据同步”串成一个可持续使用的学习工作台。
本项目第一版 GitHub 公开范围以 Windows / Tauri 桌面端为主。Android 相关内容不作为当前公开仓库主线维护范围。
普通番茄钟只负责倒计时;考研专注 更关注备考场景里的完整闭环:学习前规划、学习中约束、学习后复盘、跨设备备份和长期统计。它默认本地运行,尽量把用户数据和第三方凭据留在用户自己的设备上。
- 学习模式:支持总学习时长、番茄专注、短休、长休、长休间隔和科目绑定。
- 白名单约束:学习期间按软件、网站、PotPlayer 视频规则识别前台应用,减少干扰。
- 计划与复盘:提供清单、今日计划、课表、每日复盘、周复盘和学习统计。
- 本地优先:核心数据存储在本机 SQLite,默认不上传用户隐私数据。
- 云端同步:支持 WebDAV、对象存储 R2/S3 协议同步,并保留同步日志与备份恢复入口。
- 飞书与邮件:可选飞书任务/日历同步和邮件提醒。
- 桌面能力:系统托盘、后台 tick、前台检测、提醒音、自动更新检查。
公开截图和短演示会放在 docs/assets/。在素材完成前,请参考 FEATURES.md 了解完整功能清单。
计划补充:
docs/assets/screenshot-focus.png:专注页主界面。docs/assets/screenshot-settings-sync.png:设置页同步配置。docs/assets/demo-focus-flow.gif:30 秒以内演示开始学习模式、白名单提醒、统计回看。
截图、GIF 和演示数据必须先脱敏。不要提交真实个人数据、邮箱、飞书 App Secret、对象存储密钥、本机路径、数据库或同步备份。详细规则见 docs/assets/README.md。
环境要求:
- Windows 10/11
- Node.js 20+
- Rust stable
- Microsoft C++ Build Tools / MSVC
安装依赖:
npm.cmd install开发预览:
npm.cmd run dev启动 Tauri 桌面端:
npm.cmd run tauri dev类型检查:
npm.cmd run typecheck完整检查(TypeScript、Rust 格式、Clippy、Rust 测试):
npm.cmd test生产构建:
npm.cmd run buildRust 测试:
cd src-tauri
cargo test本仓库用轻量但明确的工程入口保持可维护性:
- GitHub Actions 在 Windows runner 上运行前端类型检查、前端构建、Rust 格式检查、Clippy 和 Rust 测试。
.editorconfig固定基础换行、编码和缩进约定。- Prettier 提供格式化入口;第一轮不会强制重排历史文件,避免无意义大 diff。
- Dependabot 每周检查 npm、Cargo 和 GitHub Actions 依赖。
- Tauri command、SQLite schema、同步 payload 是稳定边界,修改前需要说明兼容策略。
常用维护命令:
npm.cmd run typecheck
npm.cmd run build
npm.cmd test
npm.cmd run format:check建议按下面顺序阅读:
- 应用默认本地运行,数据库位于 Tauri app data 目录。
- WebDAV、对象存储、飞书、SMTP 等凭据只用于用户主动配置的集成。
- 项目不实现驱动级拦截、不隐藏进程、不阻止任务管理器结束进程、不做恶意持久化。
- 请不要提交
.env*、私钥、真实数据库、同步备份、日志或构建产物。
更多说明见 SECURITY.md。需要使用支持请看 SUPPORT.md。资产来源和授权说明见 NOTICE.md。
桌面端发布脚本位于 scripts/。当前自动发布链路包含 Tauri Windows 构建、更新元数据生成、GitHub Release 上传等能力。公开发布资产、安装包签名和 latest.json 默认放在 learning-kai/kaoyan-focus 的 GitHub Releases。
发布前先预检:
npm.cmd run release:auto -- --version $((Get-Content package.json -Raw | ConvertFrom-Json).version) --dry-run默认发布路径只处理桌面端。Android 相关发布步骤是维护者内部流程,只有显式传入 --include-android 或设置 INCLUDE_ANDROID_RELEASE=1 时才会参与版本同步和 tag 校验。
发布前请确认版本号同步:
- 补齐公开截图、演示 GIF 和英文快速介绍。
- 增加 Markdown 链接检查和更细的前端测试。
- 深化同步模块文档和备份恢复说明。
- 继续控制大文件增长,优先拆分
sync_package/identity.rs和commands/sync/object_storage_protocol.rs。 - 补充更细的贡献者任务标签,例如
good first issue、docs、sync、windows。
欢迎提交 issue、文档改进和功能 PR。开始前请阅读 CONTRIBUTING.md,行为准则见 CODE_OF_CONDUCT.md。
如果你使用 AI 协助开发,请先让 AI 阅读:
MIT License. See LICENSE.