iTodo++
一个多端待办任务管软件,包含 后端 API、桌面 / 移动端 App 与 Web 前端 三端,可跨平台使用同一套数据。

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 共享数据。

技术栈
模块 |
技术 |
说明 |
|---|
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+。
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+。
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 )。
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 交流群

项目仓库
https://gitee.com/appbook/itodo