# itodo++ **Repository Path**: appbook/itodo ## Basic Information - **Project Name**: itodo++ - **Description**: No description available - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-13 - **Last Updated**: 2026-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # iTodo++ 一个多端待办任务管理应用,包含 **后端 API**、**桌面 / 移动端 App** 与 **Web 前端** 三端,可跨平台使用同一套数据。 ![1783994519741.png](https://free.picui.cn/free/2026/07/14/6a55989abd135.png) > iTodo++: a Rails JSON API, a Flutter desktop/mobile app, and a Vue 3 web client. --- ## 功能特性 - **任务管理**:创建、编辑、完成、删除、拖拽排序;支持描述、优先级、标签。 - **清单(Task Lists)**:将任务归类到不同清单,内置「工作 / 个人 / 学习」默认清单。 - **标签(Tags)**:可自定义带颜色的标签,并按标签筛选任务。 - **优先级**:无 / 低 / 中 / 高 四级优先级,配合 Eisenhower(四象限)视图使用。 - **提醒**:支持「准时 / 提前 5 分钟 / 30 分钟 / 1 小时 / 1 天」提醒。 - **重复**:不重复 / 每天 / 工作日 / 每周 / 每月 / 每年。 - **回收站**:软删除、恢复、清空。 - **多视图**:收集箱(Inbox)、今天、未来 7 天、已完成、回收站、自定义清单、四象限、日历、专注模式。 - **多端同步**:后端提供统一 REST API,Web 与 App 共享数据。 ![1783994622013.png](https://free.picui.cn/free/2026/07/14/6a5599013b6c7.png) --- ## 技术栈 | 模块 | 技术 | 说明 | | --- | --- | --- | | `todo_api` | Ruby on Rails 8.1 + PostgreSQL + Puma | JSON API,支持 Docker(`Kamal` / `Thruster`)部署、`rack-cors` 跨域 | | `todo_app` | Flutter 3 (Dart) | 桌面(macOS 优先)/ 移动 / Web,使用 `Provider` + `http` + `window_manager` | | `todo_web` | Vue 3 + Vite + Pinia + Vue Router + axios | 单页 Web 应用,开发时代理 `/api` 到后端 `:3000` | 三端约定的后端地址均为 `http://localhost:3000/api`(Android 模拟器请改用 `10.0.2.2`)。 --- ## 目录结构 ``` . ├── todo_api/ # Rails JSON API(PostgreSQL) ├── todo_app/ # Flutter 桌面 / 移动 / Web 客户端 └── todo_web/ # Vue 3 + Vite Web 前端 ``` --- ## 快速开始 ### 1. 后端 API (`todo_api`) 环境要求:Ruby 3.2+、PostgreSQL 14+。 ```bash cd todo_api # 安装依赖 bundle install # 配置数据库(可通过 .env 设置 DB_HOST / DB_USERNAME / DB_PASSWORD / DB_NAME) cp .env.example .env # 如存在,按需修改 rails db:create db:migrate # 启动服务(默认监听 http://localhost:3000) bin/rails server # 健康检查 curl http://localhost:3000/api/health ``` 或使用 Docker 进行容器化部署(参见 `Dockerfile` 与 `Gemfile` 中的 `kamal`)。 主要 API: - `GET/POST/PUT/DELETE /api/tasks` — 任务 CRUD,支持 `view`、`list_id`、`tag_id`、`q` 筛选 - `PATCH /api/tasks/:id/toggle` — 切换完成状态 - `PATCH /api/tasks/:id/trash`、`restore`,`DELETE /api/tasks/trash/empty` — 回收站 - `GET/POST/PUT/DELETE /api/task_lists` — 清单 - `GET/POST/PUT/DELETE /api/tags` — 标签 ### 2. Web 前端 (`todo_web`) 环境要求:Node.js 18+。 ```bash cd todo_web npm install # 开发模式(默认 http://localhost:5173,/api 自动代理到后端 :3000) npm run dev # 构建生产包到 dist/ npm run build # 预览构建产物 npm run preview ``` ### 3. 桌面 / 移动 App (`todo_app`) 环境要求:Flutter 3.11+(本机已配置 SDK)。 ```bash cd todo_app flutter pub get # 运行(macOS / Windows / Linux 桌面,或连接设备 / 模拟器) flutter run # 构建各平台产物 flutter build macos # macOS flutter build windows # Windows flutter build linux # Linux flutter build apk # Android flutter build ios # iOS flutter build web # Web ``` App 默认使用本地存储(`shared_preferences`),并内置 `TodoApi` 服务可连接后端 `todo_api` 进行同步(修改 `lib/services/api_service.dart` 中的 `_baseUrl`)。 --- ## 开发说明 - 本地联调推荐:先启动 `todo_api`(:3000),再启动 `todo_web`(:5173,已配置代理)或 `todo_app`。 - 前后端通过 `rack-cors` 处理跨域;生产环境请在 `todo_api/config/initializers/cors.rb` 中限制允许的来源。 - 各子目录均保留有各自的技术文档(如 `todo_api/README.md`、`todo_app/README.md`),可查阅更细致的说明。 --- ## QQ交流群 ![1783932065941.png](https://free.picui.cn/free/2026/07/13/6a54a4a589070.png) ## 项目仓库 https://gitee.com/appbook/itodo