Skip to content

Tempestissimo616/ZenFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧩 项目详细功能

模式设置

自定义专注模式

用户新建专注模式,预设模式包括阅读模式、工作模式、电影模式、游戏模式(后续支持自定义)

设置白名单

用户输入允许浏览的应用程序名称、网站域名,支持多选(后续有使用AI辅助模糊名称判断的空间)

设置专注时长与休息时长

预设节奏:

  • 高效HIIT:专注15min,休息2min,适合启动困难状态的用户
  • 经典番茄钟:专注25min,休息5min,适合易分心状态的用户
  • 超日节律:专注90min,休息20min,适合高峰状态的用户

专注过程

启动专注

用户点击「开始专注」后,进入当前模式的限制

监控

实时检测当前活跃窗口

判断白名单

判断当前使用是否在该模式的白名单内

  • 若在白名单内:持续专注计时
  • 若不在白名单内:停留超过60s,直接终止本次专注模式(只终止专注,不影响基本时长统计),60s内关闭该页面,不影响专注持续计时

奖励

专注计时已满

每次专注时长满足后,触发抽卡奖励

奖励弹窗显示

  • 文案:获得奖励!
  • 显示:奖励弹窗跟随本轮休息时长,显示倒计时
    • 倒计时结束前,用户抽卡,抽完卡,弹窗消失
    • 若倒计时结束,用户仍未抽卡,系统随机抽一张,消失
  • 卡面设计:AI辅助生成(后续有AI模型接入空间)
  • 开盒动画

终止专注

弹窗提醒

  • 文案:本次专注已停止。
  • 弹窗停留10s后消失

收集

查看已拥有卡片,以及不同系列的收集进度

基础使用时长统计

启动软件后,累计统计各程序/网页活跃时长,X小时X分钟

专注时长统计

专注逻辑下,统计各个模式下的累计专注时长,X小时X分钟

💻 技术方案

ZenFlow Chrome Extension

1. 项目目标

追踪网页浏览时间,实时发送到服务器

2. 技术栈

  • Chrome Extension API (标签监听、窗口焦点)
  • WebSocket (实时数据传输)
  • JavaScript (核心逻辑)
  • C# (.NET Framework) (核心编程语言,用于实现后端逻辑)
  • WPF (Windows Presentation Foundation) (用于构建桌面应用UI)
  • XAML (用于定义 WPF 中的界面布局结构)
  • SQLite (用于记录抽到的卡片信息)

3. 工作流程

  1. 用户切换标签 → 计算上个页面时间
  2. 发送数据到服务器 → WebSocket传输
  3. 开始追踪新页面 → 记录开始时间
  4. WebSocket传输到.Net后端 → 通过.Net WebSocket去连接本地的localhost端口获取网页数据
  5. 使用本地SQLite数据库储存网页使用时间
  6. 通过写xaml去实现前端UI界面,C#文件去获取注册表所有应用程序信息
  7. 最后用Visual Studio Publish去生成可运行exe程序

交互流程

  1. 选择专注模式
  2. 设置白名单
  3. 配置时长参数
  4. 开始专注
  5. 实时监控反馈
  6. 专注完成/终止
  7. 抽卡奖励界面 a. 用户点击"开始抽卡" → 播放抽卡动画(如开箱 GIF) b. 播放动画完成 → 随机抽取 2 张卡片 → 展示在界面上 c. 展示卡牌后保存记录 → 将抽中的卡片保存到 SQLite 数据库中 d. 倒计时结束未点击按钮 → 自动执行抽卡逻辑(调用同样流程)

关键功能

时间追踪与监控

  • 时间追踪: 标签切换时计算停留时间
  • 焦点检测: 窗口失焦停止计时
  • 自动重连: WebSocket断开自动重连
  • 状态显示: 弹窗显示连接状态
  • 实时监控
    • 使用Windows API获取当前活跃窗口
    • WebSocket接收Chrome扩展的网站访问数据
    • 定时器持续检测状态变化

白名单匹配

  • 精确匹配:应用程序名称、网站域名
  • 模糊匹配:后续AI辅助判断
  • 多选支持:同时设置多个允许的应用/网站

专注状态管理

  • 专注计时器:记录专注时长
  • 休息计时器:记录休息时长
  • 状态切换:专注↔休息↔终止

数据存储

  • SQLite数据库存储专注记录
  • 白名单配置持久化
  • 专注统计数据分析

抽卡奖励界面

  • 倒计时控制:设置定时器控制抽卡时间窗口,倒计时结束自动抽卡
  • 自动抽卡:用户未点击时由系统自动执行抽卡并展示结果
  • 动画播放:使用 GIF 实现开箱动效,提高用户沉浸感
  • 数据库记录:使用 SQLite 保存已获得卡片,并展示到卡片图鉴,用于后续卡片状态管理

DEMO

16a528fe-54f6-4c20-8b96-ca43c35f8a00

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors