https://github.com/rainoffallingstar/pomodoroflow-rs
https://github.com/rainoffallingstar/pomodoroflow-rs
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/rainoffallingstar/pomodoroflow-rs
- Owner: rainoffallingstar
- Created: 2025-12-23T15:29:25.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2025-12-24T02:52:16.000Z (8 months ago)
- Last Synced: 2025-12-25T16:08:30.593Z (8 months ago)
- Language: Rust
- Size: 347 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PomodoroFlow-Rs
一个现代化的番茄钟 + 待办事项桌面应用
基于 **Tauri + React + Rust** 开发
[](https://tauri.app/)
[](https://reactjs.org/)
[](https://www.typescriptlang.org/)
[](https://www.rust-lang.org/)
[](LICENSE)
## ✨ 功能特性
### 🍅 番茄钟功能
- ⏱️ 精确的倒计时器(MM:SS 格式)
- 🔄 工作/短休息/长休息三种周期自动切换
- ⚙️ 可配置的时长(默认 25/5/15 分钟)
- ▶️ 开始/暂停/重置/跳过控制
- 🔔 系统通知和声音提醒
- 📊 实时进度显示
- ⌨️ 快捷键支持(`Ctrl+Space` 启动/暂停)
### ✅ 待办事项管理
- ➕ 创建、编辑、删除任务
- 🔄 任务状态切换(待办/进行中/已完成)
- 💾 本地 SQLite 数据库存储
- 🔍 搜索和筛选功能
- 📋 三标签页视图(待办/进行中/已完成)
- 🎯 在当前标签页创建任务会自动设置对应状态
- ✨ iOS 18 分组列表(Inset Grouped)风格
- 📜 列表内容在卡片内滚动,头部固定
### 🎨 界面设计
- 🎨 iOS 18 质感的现代化界面设计
- 🌞 浅色/深色/系统主题
- 💻 响应式设计,桌面和移动端自适应
- ✨ 流畅的动画效果和过渡
- 🎯 直观的用户交互
- 📱 移动端友好
- 🧊 毛玻璃卡片效果
- ⭕ 圆环进度条动画
### ⌨️ 快捷键支持
- `Ctrl/Cmd + Space` - 启动/暂停番茄钟
- `Ctrl/Cmd + N` - 新建任务
- `Ctrl/Cmd + R` - 重置番茄钟
- `Ctrl/Cmd + ,` - 打开设置
### ⚙️ 配置管理
- 🎚️ 自定义番茄钟时长
- 🔔 通知设置
- 🎨 主题偏好
- 💾 配置持久化
## 🏗️ 技术栈
### 前端
- **框架**: React 18 + TypeScript
- **构建工具**: Vite
- **状态管理**: Zustand
- **样式**: iOS 18 Design System,自定义 CSS(亮色/暗色主题)
- **设计**: 毛玻璃效果、圆环进度条、分段列表
### 后端
- **框架**: Tauri 1.0+
- **语言**: Rust (2021 Edition)
- **数据库**: SQLite (rusqlite)
- **异步**: Tokio
## 📦 项目结构
```
pomoflow-rs/
├── src/ # React 前端
│ ├── components/ # UI 组件
│ │ ├── PomodoroTimer.tsx # 番茄钟计时器
│ │ ├── TodoList.tsx # 待办列表
│ │ ├── SettingsPanel.tsx # 设置面板
│ │ └── ...
│ ├── stores/ # Zustand 状态管理
│ │ └── appStore.ts
│ ├── hooks/ # 自定义钩子
│ ├── styles/ # CSS 样式
│ └── App.tsx # 主应用组件
│
├── src-tauri/ # Tauri 后端
│ ├── src/
│ │ ├── main.rs # 应用入口
│ │ └── commands/ # Tauri 命令
│ │ ├── todo_commands.rs
│ │ ├── pomodoro_commands.rs
│ │ └── config_commands.rs
│ └── Cargo.toml
│
├── src/ # Rust 核心库
│ ├── core/ # 核心业务逻辑
│ │ ├── pomodoro.rs # 番茄钟逻辑
│ │ ├── todo.rs # 待办事项模型
│ │ └── state/ # 状态管理
│ ├── storage/ # 数据存储
│ │ └── database.rs # SQLite 操作
│ └── async_utils/ # 异步工具
│
├── docs/ # 文档
│ ├── architecture.md # 架构设计
│ ├── requirements.md # 需求文档
│ └── active_context.md # 项目状态
│
├── package.json # 前端依赖
├── Cargo.toml # Rust 依赖
├── vite.config.ts # Vite 配置
└── README.md # 本文件
```
## 🚀 快速开始
### 前置要求
- Node.js 18+
- Rust 1.70+
- npm 或 yarn
### 安装依赖
```bash
# 安装前端依赖
npm install
# 或使用 yarn
yarn install
```
### 开发模式
```bash
# 启动开发服务器(热重载)
npm run tauri:dev
# 或使用
npm run dev
```
### 生产构建
```bash
# 构建应用
npm run tauri build
# 构建输出位置
# Windows: src-tauri/target/release/bundle/
# macOS: src-tauri/target/release/bundle/
# Linux: src-tauri/target/release/bundle/
```
### 运行测试
```bash
# 运行前端测试
npm test
# 运行测试并生成覆盖率
npm run test:coverage
```
## 📊 数据库设计
### 核心表
**todos** - 待办事项
```sql
CREATE TABLE todos (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
status TEXT NOT NULL, -- todo/in_progress/done
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL
);
```
**user_config** - 用户配置
```sql
CREATE TABLE user_config (
id INTEGER PRIMARY KEY CHECK (id = 1),
pomodoro_work_duration INTEGER DEFAULT 1500,
pomodoro_short_break_duration INTEGER DEFAULT 300,
pomodoro_long_break_duration INTEGER DEFAULT 900,
pomodoro_cycles_until_long_break INTEGER DEFAULT 4,
notifications_enabled BOOLEAN DEFAULT 1,
sound_enabled BOOLEAN DEFAULT 1,
theme TEXT DEFAULT 'light'
);
```
**pomodoro_sessions** - 番茄钟会话记录
```sql
CREATE TABLE pomodoro_sessions (
id INTEGER PRIMARY KEY,
phase TEXT NOT NULL,
duration_seconds INTEGER NOT NULL,
completed_at TIMESTAMP NOT NULL,
cycle_count INTEGER NOT NULL
);
```
## 🎯 使用说明
### 1. 启动应用
首次运行会自动创建本地数据库并加载默认配置。
### 2. 使用番茄钟
- 点击 **Start** 按钮启动工作计时
- 计时结束会收到系统通知
- 可随时点击 **Pause** 暂停或 **Reset** 重置
- 使用 **Skip** 跳过当前阶段
### 3. 管理待办事项
- 在输入框中输入任务名称,按 **Enter** 添加
- 点击任务前的复选框切换完成状态
- 点击 **Delete** 删除任务
### 4. 切换主题
- 点击右上角的主题切换按钮
- 支持浅色、深色、系统主题
- 主题选择会自动保存
### 5. 使用快捷键
- `Ctrl/Cmd + Space`: 启动/暂停番茄钟
- `Ctrl/Cmd + N`: 聚焦到新建任务输入框
- `Ctrl/Cmd + R`: 重置番茄钟
- `Ctrl/Cmd + ,`: 打开设置面板
## 🏗️ 架构设计
### 分层架构
```
┌─────────────────────┐
│ React 前端层 │ ← UI 组件、状态管理
├─────────────────────┤
│ Tauri API 层 │ ← Rust 命令接口
├─────────────────────┤
│ 核心业务逻辑层 │ ← 番茄钟、待办逻辑
├─────────────────────┤
│ 数据持久化层 │ ← SQLite 存储
└─────────────────────┘
```
### 状态管理
- **Zustand**: 前端轻量级状态管理
- **事件驱动**: 实时同步后端状态
- **持久化**: 自动保存用户配置
### 数据流
```
用户操作 → React 组件 → Zustand Store → Tauri API → Rust 命令 → 业务逻辑 → 数据库
```
详细架构文档请查看 [docs/architecture.md](docs/architecture.md)
## 🧪 测试
### 测试框架
- **前端**: Vitest + React Testing Library
- **组件测试**: 测试 React 组件渲染和交互
- **状态测试**: 测试 Zustand store 操作
### 测试覆盖
- 组件渲染测试
- 用户交互测试
- 状态管理测试
- 集成测试
## 📈 性能指标
- **启动时间**: < 5 秒
- **内存占用**: < 150 MB
- **UI 响应**: < 100ms
- **数据库操作**: < 10ms
## 🔧 开发指南
### 代码规范
- **TypeScript**: 严格模式,100% 类型覆盖
- **Rust**: `cargo clippy` 检查
- **提交规范**: 使用清晰的提交消息
### 开发流程
1. 创建功能分支
2. 编写代码和测试
3. 运行测试确保通过
4. 提交 Pull Request
## 📋 未来计划
### v0.2.0
- [ ] 番茄钟统计页面
- [ ] 任务优先级和标签
- [ ] 数据导入/导出
- [ ] 自定义声音提醒
### v0.3.0
- [ ] 任务截止日期
- [ ] 任务提醒
- [ ] 更多主题选项
- [ ] 多语言支持
### v1.0.0
- [ ] 跨平台打包发布
- [ ] 自动更新
- [ ] 插件系统
## 🤝 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建你的功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交你的修改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启一个 Pull Request
## 📝 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 🙏 致谢
- [Tauri](https://tauri.app/) - 构建更小、更快、更安全的桌面应用
- [React](https://reactjs.org/) - 用户界面库
- [Vite](https://vitejs.dev/) - 下一代前端构建工具
- [Zustand](https://github.com/pmndrs/zustand) - 简洁的状态管理
- [Vitest](https://vitest.dev/) - 快速单元测试框架
- [Rust](https://www.rust-lang.org/) - 系统编程语言
## 📞 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 [Issue](https://github.com/yourusername/pomoflow-rs/issues)
- 发起 [Discussion](https://github.com/yourusername/pomoflow-rs/discussions)
---
**PomodoroFlow-Rs** - 专注工作,高效生活! 🍅✨