开源] itodo++ 一个开源、免费、可自行部署的多端待办任务管理软件,主打保护隐私。
# 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/<a href="http://readme.md/" rel="nofollow">README.md</a>`、`todo_app/<a href="http://readme.md/" rel="nofollow">README.md</a>`),可查阅更细致的说明。
---
## QQ 交流群

## 项目仓库
[https://gitee.com/appbook/itodo](https://gitee.com/appbook/itodo)
---
原文链接:[点击查看](https://www.v2ex.com/t/1227110)
一个多端待办任务管软件,包含 **后端 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/<a href="http://readme.md/" rel="nofollow">README.md</a>`、`todo_app/<a href="http://readme.md/" rel="nofollow">README.md</a>`),可查阅更细致的说明。
---
## QQ 交流群

## 项目仓库
[https://gitee.com/appbook/itodo](https://gitee.com/appbook/itodo)
---
原文链接:[点击查看](https://www.v2ex.com/t/1227110)
评论
暂无评论。