# superpowers-todo
**Repository Path**: roboslyq/superpowers-todo
## Basic Information
- **Project Name**: superpowers-todo
- **Description**: TODO 待办管理工具
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-03-25
- **Last Updated**: 2026-03-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Superpowers Todo
一款简洁高效的个人待办管理桌面应用
---
## 简介
Superpowers Todo 是一款基于 Electron 和 Vue 3 构建的跨平台桌面待办管理应用。采用 SQLite 本地数据库存储,数据安全可控,无需联网即可使用。
## 功能特性
### 核心功能
- **任务管理** - 创建、编辑、删除、完成任务
- **子任务** - 为任务添加子任务清单,逐步完成目标
- **分类管理** - 按工作、学习、生活等分类组织任务
- **标签系统** - 多标签灵活管理,快速筛选
- **优先级** - 高/中/低三级优先级设置
- **截止日期** - 任务到期提醒
### 多视图展示
- **列表视图** - 传统列表展示,支持分组和排序
- **树形视图** 🆕 - 基于任务关联关系的层级结构,支持展开/折叠
- **看板视图** - 拖拽式看板,支持自定义看板和泳道
- **日历视图** - 按日期查看任务,支持月/周/日视图
- **卡片视图** - 瀑布流卡片布局
- **甘特图** - 项目进度时间线视图
- **思维导图** 🆕 - 可视化任务结构,支持多种布局和全屏模式
### 任务关联
- **依赖关系** - 设置任务依赖,A 完成后 B 才能开始
- **阻塞关系** - 标记阻塞任务,A 阻塞 B 的进行
- **关联可视化** - 在思维导图和树形视图中展示关联关系
### 主题系统
- 浅色/深色/跟随系统三种外观模式
- 4 种预设主题(默认、海洋、森林、暖橙)
- 完整自定义支持,可配置 25+ CSS 变量
- 主题导入/导出功能
### 数据统计
- 任务完成趋势图表
- 分类分布可视化
- 本地 SQLite 存储,数据安全可控
## 技术栈
| 技术 | 说明 |
|------|------|
| Vue 3 | 渐进式 JavaScript 框架 |
| TypeScript | 类型安全的 JavaScript 超集 |
| Vite | 下一代前端构建工具 |
| Pinia | Vue 状态管理库 |
| Vue Router | Vue 官方路由 |
| Electron 28 | 跨平台桌面应用框架 |
| SQLite (better-sqlite3) | 嵌入式关系数据库 |
| simple-mind-map | 思维导图渲染库 |
| electron-builder | Electron 应用打包工具 |
## 项目结构
```
├── electron/ # Electron 主进程
│ ├── main.ts # 主进程入口
│ ├── preload.ts # IPC 通信桥接
│ ├── updater.ts # 自动更新逻辑
│ ├── database/ # 数据库模块
│ │ ├── index.ts # 数据库初始化
│ │ ├── migrations.ts # 数据迁移
│ │ └── repositories/ # SQLite 仓库实现
│ └── ipc/ # IPC 通信
├── src/ # Vue 渲染进程
│ ├── components/ # Vue 组件
│ │ ├── common/ # 通用组件
│ │ ├── task/ # 任务组件
│ │ │ ├── TaskList.vue # 列表视图
│ │ │ ├── TreeListView.vue # 树形视图 🆕
│ │ │ ├── TreeNode.vue # 树节点组件 🆕
│ │ │ ├── TaskBoard.vue # 看板视图
│ │ │ ├── TaskCalendar.vue # 日历视图
│ │ │ ├── TaskGrid.vue # 卡片视图
│ │ │ └── ViewSwitcher.vue # 视图切换器
│ │ ├── mindmap/ # 思维导图组件 🆕
│ │ │ └── MindMapView.vue
│ │ ├── gantt/ # 甘特图组件
│ │ ├── category/ # 分类组件
│ │ ├── stats/ # 统计图表
│ │ └── layout/ # 布局组件
│ ├── views/ # 页面视图
│ ├── stores/ # Pinia 状态管理
│ │ ├── taskStore.ts # 任务状态
│ │ ├── taskRelationStore.ts # 任务关联状态 🆕
│ │ ├── viewStore.ts # 视图设置状态
│ │ └── themeStore.ts # 主题状态
│ ├── repositories/ # 数据访问层
│ ├── types/ # TypeScript 类型
│ │ ├── task.ts # 任务类型
│ │ ├── relation.ts # 关联类型 🆕
│ │ └── view.ts # 视图类型
│ └── utils/ # 工具函数
├── dist/ # Web 构建输出
├── dist-electron/ # Electron 构建输出
└── release/ # 安装包输出
```
## 快速开始
### 环境要求
- Node.js >= 18
- npm >= 9
### 安装依赖
```bash
npm install
```
### 开发模式
```bash
# 启动 Web 开发服务器
npm run dev
# 启动 Electron 开发模式
npm run electron:dev
```
### 构建打包
```bash
# 构建 Windows 版本
npm run electron:build:win
# 构建 macOS 版本
npm run electron:build:mac
# 构建所有平台
npm run electron:build:all
```
构建产物位于 `release/` 目录。
## 架构设计
### 仓库模式
数据访问通过仓库接口抽象,支持多种存储后端:
```typescript
interface TaskRepository {
getAll(): Task[]
getById(id: string): Task | undefined
save(task: Task): Task
delete(id: string): void
}
interface TaskRelationRepository {
getAll(): TaskRelation[]
getByTaskId(taskId: string): TaskRelation[]
save(relation: TaskRelation): TaskRelation
delete(id: string): void
}
```
- **LocalStorage 仓库** - Web 浏览器降级方案
- **Electron IPC 仓库** - 通过 IPC 调用主进程 SQLite
### IPC 通信
渲染进程与主进程通过 `contextBridge` 安全通信:
```typescript
// 渲染进程调用
const tasks = await window.electronAPI.task.getAll()
await window.electronAPI.task.save(task)
const relations = await window.electronAPI.relation.getAll()
await window.electronAPI.relation.save(relation)
```
### 数据库表结构
| 表名 | 说明 |
|------|------|
| tasks | 任务主表 |
| categories | 分类表 |
| tags | 标签表 |
| subtasks | 子任务表 |
| task_tags | 任务-标签关联表 |
| task_relations | 任务关联关系表 🆕 |
| settings | 应用设置(含主题配置) |
| kanban_boards | 看板配置表 |
| kanban_swimlanes | 看板泳道表 |
### 任务关联关系
支持两种关联类型:
- **dependency** - 依赖关系:A 完成后 B 才能开始
- **blocking** - 阻塞关系:A 阻塞 B 的进行
```typescript
interface TaskRelation {
id: string
sourceTaskId: string // 源任务 ID
targetTaskId: string // 目标任务 ID
relationType: 'dependency' | 'blocking'
createdAt: string
updatedAt: string
}
```
### 视图系统
应用支持 7 种视图模式:
| 视图 | 说明 | 特性 |
|------|------|------|
| 列表 | 传统列表展示 | 分组、排序、筛选 |
| 树形 | 层级结构展示 | 基于关联关系、展开/折叠、分组 |
| 看板 | 拖拽式看板 | 自定义看板、泳道、WIP 限制 |
| 日历 | 按日期查看 | 月/周/日视图、拖拽调整 |
| 卡片 | 瀑布流布局 | 卡片尺寸、封面图 |
| 甘特图 | 时间线视图 | 任务进度、依赖关系 |
| 思维导图 | 可视化结构 | 多种布局、全屏模式、关联显示 |
### 主题系统
应用支持完整的主题定制功能:
**外观模式**
- 浅色模式 - 固定使用浅色主题
- 深色模式 - 固定使用深色主题
- 跟随系统 - 自动跟随操作系统设置
**预设主题**
- 默认(紫色)- 经典紫粉渐变
- 海洋 - 清新蓝色系
- 森林 - 自然绿色系
- 暖橙 - 温暖橙红系
**自定义主题**
- 可自定义 25+ CSS 变量
- 支持背景、文字、边框、渐变、分类颜色等
- 主题配置自动持久化
**导入导出**
- 导出当前主题为 JSON 文件
- 从 JSON 文件导入主题配置
主题相关文件:
- `src/stores/themeStore.ts` - 主题状态管理
- `src/utils/theme.ts` - 主题工具函数
- `src/types/theme.ts` - 主题类型定义
- `src/assets/styles/themes/` - 主题 CSS 文件
## 开发指南
### 代码规范
- 使用 TypeScript 编写,确保类型安全
- 组件采用 `