An open API service indexing awesome lists of open source software.

https://github.com/rainoffallingstar/pomodoroflow-rs


https://github.com/rainoffallingstar/pomodoroflow-rs

Last synced: 5 months ago
JSON representation

Awesome Lists containing this project

README

          

# PomodoroFlow-Rs

一个现代化的番茄钟 + 待办事项桌面应用

基于 **Tauri + React + Rust** 开发

[![Tauri](https://img.shields.io/badge/Tauri-1.0+-blue)](https://tauri.app/)
[![React](https://img.shields.io/badge/React-18+-blue)](https://reactjs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue)](https://www.typescriptlang.org/)
[![Rust](https://img.shields.io/badge/Rust-1.70+-orange)](https://www.rust-lang.org/)
[![License](https://img.shields.io/badge/License-MIT-green)](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** - 专注工作,高效生活! 🍅✨