moonfocus

A Pomodoro timer and habit tracker with a lightweight TUI rendering engine and web console, written in MoonBit.

pomodoro
tui
habit-tracker
terminal
productivity
moon add zkazure/moonfocus@0.1.1
Download zip
Author
Version
0.1.1
License
Apache-2.0
Last updated
last month
Downloads
10
README

#🎯 MoonFocus

MoonBit Version License Status


#🔗 项目地址

  • GitHub:https://github.com/zkazure/MoonFocus
  • GitLink:https://gitlink.org.cn/kazure/MoonFocus
  • Mooncakes:https://mooncakes.io/docs/zkazure/moonfocus


#📝 简介

MoonFocus 是一款专门为终端爱好者与开发者打造的个人专注与习惯管理工具。它巧妙地结合了番茄工作法(Pomodoro Timer)每日习惯追踪清单(Habit Tracker),使用户能够在沉浸式的环境中管理时间、追踪习惯,并最大限度地减少数字设备带来的干扰。

为了提供更好的用户体验,MoonFocus 提供了两种界面模式:
  1. 💻 本地 TUI 命令行模式:使用 MoonBit 编写的纯终端渲染界面,极其轻量和快速。
  2. 🌐 交互式 Web 控制台模式:面向用户的网页端界面,融合了复古 CRT 终端模拟器现代玻璃态(Glassmorphism)控制面板,支持键盘快捷键交互和原生合成音效。


#🎯 目的

  • 专注与效率:帮助用户在熟悉且纯净的终端或仿终端网页环境中管理个人时间,避免被图形化系统繁杂的通知和娱乐软件打扰。
  • 技术探索:作为基于 MoonBit 编程语言开发的系统级项目,旨在探索 MoonBit 在高性能终端渲染、流式/弹性布局计算方面的潜力。同时通过 Web 仿真版扩展生态,使用户在任意浏览器中也能体验相同的交互逻辑。


#功能

#1. ⏱️ 番茄钟专注管理

  • 核心状态机:支持 Focus(专注)、Short Break(短休)和 Long Break(长休)三阶段自动转换。
  • 动态倒计时,可直观呈现专注进度。

#2. 📅 习惯/任务清单

  • 提供多选清单形式,方便进行日常任务和习惯的打卡管理。
  • 支持选中项高亮标示、复选框打勾状态切换。

#3. 🎨 自研轻量级 TUI 渲染引擎(CLI 端)

  • ANSI 封装:通过纯 ANSI Escape 序列实现终端屏幕清理、光标隐藏/显现以及自定义前背景色高亮输出。
  • 双缓冲区设计:在内存中构建 2D 终端屏幕栅格,减少不必要的屏幕重绘,防止终端出现闪烁现象。
  • 弹性流式布局:支持类似 Flexbox 的比例和绝对值分配,可多层嵌套进行横向 (Horizontal) 和纵向 (Vertical) 界面划分。
  • 模块化小组件:提供边框 (Block)、带标题的面板以及多行文字渲染组件。

#🚀 使用说明

#1. 终端 TUI 一键预览(CLI 模式)

直接在项目根目录下通过 moon 命令运行 Native 主程序:
moon run main
运行后,程序将清除当前终端屏幕并以静态形式呈现双栏 TUI 布局样式。

#2. 网页端交互式控制面板(Web 模式)

项目现已全面支持网页端交互!我们为您提供了一个面向用户的极简、自适应的 Web 前端,包含了完整的交互状态环路和复古音效。

启动步骤
  1. 启动本地静态服务器 在项目根目录下,启动一个静态网页服务器托管 web 目录:
    npx -y http-server web
启动后,在浏览器中打开终端中显示的可用地址即可体验完整的交互式控制台(通常为默认的 http://127.0.0.1:8080,如端口被占用可能会顺延至 http://127.0.0.1:8081,请以终端输出为准)。


#📸 示例

不管是 CLI 命令行还是 Web 端的 CRT 模拟器,均基于相同的 ASCII TUI 布局呈现:

┌───────────────────────── MoonFocus ──────────────────────────┐ │ │ │ ┌────────────── Timer ──────────────┐ ┌──────── Habits ──────┐ │ │ │ │ │ [ ] Read 30 mins │ │ │ │ Focus │ │ [ ] Exercise │ │ │ │ 25:00 │ │ [ ] Write code │ │ │ │ │ │ │ │ │ └───────────────────────────────────┘ └──────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────┘


#🤝 贡献指南

我们热烈欢迎各类贡献,无论是修复缺陷、添加新功能还是改进文档:
  1. 反馈缺陷或提出建议:请直接在 Issues 提交工单。
  2. 贡献代码
    • 先 Fork 本仓库,然后从主分支迁出你的功能分支 (git checkout -b feature/amazing-feature)。
    • 编写完代码后,请确保执行 moon test 验证功能。
    • 在提交 Pull Request 之前,请在根目录执行以下命令,更新包接口定义并格式化代码:
      moon info && moon fmt
    • 提交 PR,说明改动的目的与具体改动细节。


#📜 版本历史

  • v0.1.0 (当前发布版)
    • 核心 TUI 渲染双缓冲机制及 ANSI 控制模块完成。
    • 完成番茄钟与习惯管理的数据模型。
    • 实现本地命令行静态终端面板布局与组件渲染。
    • [新增] 完成面向用户的交互式 Web 客户端,内置 CRT 仿真终端、 glassmorphism Dashboard、本地数据同步和原生音频合成。


#⚖️ 许可证

本项目基于 Apache-2.0 许可证 开源发布。对于用户 and 贡献者,这意味着您可以自由使用、修改和分发此软件,但必须保留原作者的版权声明和许可证副本。


#💖 致谢

  • 感谢 MoonBit 团队 创造了如此优秀的、极速轻量的新一代编程语言,让系统级终端编程更加高效有趣。
  • 感谢 TUI 社区的优秀前行者(如 Rust 社区的 Ratatui 和 Go 社区的 Bubble Tea),为本项目的双缓冲区和网格容器设计带来了宝贵的灵感。


#🟢 状态

  • 阶段全部完成。目前第一阶段(TUI 渲染缓冲)、第二阶段(番茄钟与习惯管理数据模型)、第三和第四阶段(Web 前端交互与跨平台编译绑定)已全部顺利完成。项目完全具备 Native CLI 静态预览和自适应 Web 全功能交互功能。


#🔗 相关资源


#🛠️ 技术栈

  • 核心语言MoonBit (编译至 Native C/Rust 或 WebAssembly)
  • 前端技术:HTML5 / Vanilla CSS3 (CSS Variables, Backdrop blur) / JavaScript (ES6)
  • 音频技术:Web Audio API 原生音效合成
  • 工具链moon CLI 工具链, npx http-server


#📦 依赖关系

  • 核心依赖:零外部库依赖。程序完全依靠 MoonBit 标准库内置的功能包编译构建。
  • 开发与部署:需要安装 MoonBit 工具链 (moon) 用于本地 CLI 编译。运行 Web 控制台建议使用 Node.js / npx 或 Python 等启动本地静态服务。


#💻 兼容性

  • 终端:支持任何遵循 ANSI 标准的现代化虚拟终端环境。
  • 平台
    • 操作系统:Windows, Linux, macOS 跨平台支持。
    • 编译后端:原生支持 Native (x86_64, aarch64 等) 与 WebAssembly 环境。
  • 浏览器:兼容 Chrome, Edge, Safari, Firefox 等支持 ES6 模块及 Web Audio API 的主流现代化浏览器。


#🔒 安全性

  • 本地运行:网页端完全依赖 localStorage 进行本地离线存储,没有云端数据库,保障用户隐私安全。
  • 安全漏洞反馈:如发现任何内存分配、控制台转义欺骗或前端漏洞,请提交 GitHub Issue。


#🌐 国际化

  • 输入支持:CLI 缓冲区和 Web 文本输入完全支持 UTF-8 多字节字符,您可以自由输入中文作为您的习惯清单。
  • 界面语言:目前默认提供中文与英文提示,计划在未来版本引入多语言本地化语言包。

Source Files