一个使用 Rust 构建的现代终端 Todo 应用。
- 数据模型:完整的 Todo 项目结构,支持标题、描述、优先级、标签等
- 持久化存储:JSON 文件存储,支持自动备份
- TUI 界面:现代化的终端界面,使用 ratatui 构建
- 键盘导航:vim 风格的键位绑定(j/k 上下移动)
- 项目管理:创建、删除、标记完成状态
- 筛选功能:全部、活跃、已完成、今日创建的项目
- 详细信息面板:显示选中项目的详细信息
- 帮助系统:内置的帮助对话框
- 状态管理:实时状态反馈和错误处理
src/
├── main.rs # 应用入口点
├── app.rs # 应用状态和主逻辑
├── events.rs # 事件处理和键盘映射
├── todo/ # Todo 数据模块
│ ├── item.rs # TodoItem 数据结构
│ ├── storage.rs # 数据持久化
│ └── mod.rs
├── ui/ # UI 组件模块
│ ├── layout.rs # 布局管理
│ ├── components.rs # UI 组件
│ └── mod.rs
- ratatui 0.28 - 现代 TUI 框架
- crossterm 0.28 - 跨平台终端控制
- serde + serde_json - 数据序列化
- anyhow - 错误处理
- chrono - 时间处理
- uuid - 唯一标识符
- dirs - 配置目录管理
# 克隆仓库
git clone <repository-url>
cd todotui
# 构建项目
cargo build --release
# 运行应用
cargo run- Rust 1.70+
- 支持 UTF-8 的终端
- Linux、macOS 或 Windows
j/↓- 向下移动k/↑- 向上移动g/Home- 跳到第一项G/End- 跳到最后一项←- 取消选择
n- 创建新的 TodoEnter- 切换完成状态d- 删除选中项目e- 编辑选中项目(待实现)
a- 显示全部项目c- 仅显示已完成项目t- 仅显示活跃项目T- 仅显示今日创建的项目
?- 显示/隐藏帮助→/i- 切换详情面板s- 保存更改q/Esc- 退出应用
应用数据存储在用户配置目录中:
- Linux/macOS:
~/.config/todotui/todos.json - Windows:
%APPDATA%\todotui\todos.json
自动备份文件:todos.json.bak
这是一个功能可用的原型版本,包含核心的 Todo 管理功能。
- 文本输入对话框(用于新建/编辑)
- 项目描述编辑
- 优先级设置
- 标签管理
- 截止日期功能
- 项目搜索
- 导出功能(Markdown、JSON)
- 主题和颜色切换
- 多级分类/项目
项目包含完整的单元测试:
- 数据模型测试
- 存储功能测试
- 事件处理测试
- UI 组件测试
运行测试:
cargo test欢迎贡献代码!请先查看 TODO 列表和 issue。
# 安装开发依赖
cargo install cargo-watch cargo-tarpaulin
# 运行开发服务器(自动重新编译)
cargo watch -x run
# 运行测试覆盖率
cargo tarpaulin --out HtmlMIT License
TodoTui - 让终端中的任务管理变得简单高效 🦀