feat:基础功能实现
feat: 重构 TodoList 架构,新增动态 API 与 MAUI 内嵌 Web 服务 feat:优化交互逻辑,优化发布流程
This commit is contained in:
@@ -1,133 +1,170 @@
|
||||
# TodoList 待办事项管理应用
|
||||
# TodoList 跨平台待办事项管理应用
|
||||
|
||||
一个基于 C# WPF 开发的轻量、高效桌面待办事项管理应用,专注于通过全局快捷键提供极致的快速记录体验。
|
||||
一个基于 MAUI + WebView 架构开发的跨平台待办事项管理应用,支持 Windows、macOS、Android、iOS 和 Linux(预览)平台。通过 HTTP API 实现前后端通信,提供轻量、高效的任务管理体验。
|
||||
|
||||
## 🚀 功能特点
|
||||
|
||||
### 核心功能
|
||||
- **全局快捷键快速记录**:支持系统级全局快捷键(如 `Ctrl + Alt + A`),随时唤起记录窗口
|
||||
- **跨平台支持**:基于 MAUI + WebView 架构,支持 Windows、macOS、Android、iOS 和 Linux(预览)
|
||||
- **任务管理**:支持创建、编辑、删除、完成状态切换
|
||||
- **优先级管理**:支持高、中、低三种优先级设置,通过颜色直观区分
|
||||
- **任务状态跟踪**:清晰标记任务完成状态,默认隐藏已完成任务
|
||||
- **任务状态跟踪**:清晰标记任务完成状态,支持过滤查看(全部/进行中/已完成)
|
||||
- **本地数据持久化**:使用 SQLite 数据库保存数据,支持完全离线使用
|
||||
- **HTTP API 通信**:前后端通过 RESTful API 进行数据交互
|
||||
|
||||
### 技术特性
|
||||
- **响应式界面**:基于 WPF 构建的现代化用户界面
|
||||
- **MVVM 架构**:采用 CommunityToolkit.Mvvm 实现清晰的架构分层
|
||||
- **自包含发布**:支持单文件发布,无需额外依赖
|
||||
- **一键打包**:内置自动构建和打包脚本
|
||||
- **现代化架构**:MAUI + WebView + C# 后端 + Vue.js 前端
|
||||
- **分层设计**:Core(核心层)+ API(后端)+ Web(前端)
|
||||
- **响应式界面**:Vue.js 3 实现的现代化用户界面
|
||||
- **统一 API 设计**:RESTful API 风格,支持跨域请求
|
||||
|
||||
## 🛠️ 技术栈
|
||||
|
||||
- **开发语言**:C# 10+
|
||||
- **UI 框架**:WPF (Windows Presentation Foundation)
|
||||
- **目标框架**:.NET 8.0
|
||||
- **架构模式**:MVVM (Model-View-ViewModel)
|
||||
- **数据存储**:SQLite (sqlite-net-pcl)
|
||||
- **打包工具**:Inno Setup 6
|
||||
- **依赖管理**:NuGet
|
||||
### 后端技术栈
|
||||
- **开发语言**:C# 10
|
||||
- **框架**:.NET 10
|
||||
- **UI 框架**:MAUI (Multi-platform App UI)
|
||||
- **Web 服务器**:Kestrel (ASP.NET Core 内置)
|
||||
- **API 框架**:ASP.NET Core Web API
|
||||
- **数据访问**:Entity Framework Core
|
||||
- **数据库**:SQLite (本地存储)
|
||||
- **依赖注入**:Microsoft.Extensions.DependencyInjection
|
||||
|
||||
### 前端技术栈
|
||||
- **开发语言**:TypeScript
|
||||
- **框架**:Vue.js 3
|
||||
- **构建工具**:Vite
|
||||
- **HTTP 客户端**:Axios
|
||||
- **状态管理**:Pinia
|
||||
- **UI 组件库**:Element Plus / Vant (移动端)
|
||||
- **CSS 预处理器**:SCSS
|
||||
|
||||
## 📦 安装与使用
|
||||
|
||||
### 直接安装
|
||||
1. 从 `Output` 目录下载最新的安装包:`TodoList_Setup_vX.X.X.exe`
|
||||
2. 双击运行安装程序,按照提示完成安装
|
||||
3. 启动应用后,在系统托盘找到应用图标
|
||||
|
||||
### 使用说明
|
||||
- **快速记录**:按下预设的全局快捷键(默认为 `Ctrl + Alt + A`)
|
||||
- **添加任务**:在快速记录窗口中输入任务内容,设置优先级,按 Enter 保存
|
||||
- **管理任务**:在主界面中查看、编辑和标记任务完成状态
|
||||
- **隐藏完成任务**:默认自动隐藏已完成任务,可通过界面开关显示
|
||||
|
||||
## 🔧 开发指南
|
||||
|
||||
### 环境要求
|
||||
- Visual Studio 2022 或更高版本
|
||||
- .NET 8.0 SDK
|
||||
- Inno Setup 6(用于打包)
|
||||
- **后端**:
|
||||
- .NET 10 SDK
|
||||
- Visual Studio 2022 或更高版本
|
||||
- **前端**:
|
||||
- Node.js 18+
|
||||
- npm 或 yarn
|
||||
|
||||
### 快速开始
|
||||
|
||||
1. **克隆或下载项目**
|
||||
```bash
|
||||
git clone <仓库地址>
|
||||
cd TodoList
|
||||
```
|
||||
|
||||
2. **打开项目**
|
||||
- 使用 Visual Studio 打开 `TodoList.slnx` 解决方案
|
||||
- 或直接打开 `TodoList/TodoList.csproj` 项目文件
|
||||
|
||||
3. **安装依赖**
|
||||
```bash
|
||||
dotnet restore
|
||||
```
|
||||
|
||||
4. **运行项目**
|
||||
```bash
|
||||
dotnet run --project TodoList/TodoList.csproj
|
||||
```
|
||||
|
||||
### 构建与发布
|
||||
|
||||
使用内置的发布脚本进行一键构建和打包:
|
||||
|
||||
#### 1. 克隆或下载项目
|
||||
```bash
|
||||
cd TodoList/TodoList
|
||||
powershell -ExecutionPolicy Bypass -File "BuildSetup.ps1"
|
||||
git clone <仓库地址>
|
||||
cd TodoList
|
||||
```
|
||||
|
||||
脚本功能:
|
||||
- 自动递增版本号
|
||||
- 更新项目文件和安装脚本版本
|
||||
- 编译 Release 版本
|
||||
- 生成单文件可执行文件
|
||||
- 创建安装程序(输出到 `Output` 目录)
|
||||
#### 2. 启动后端 API
|
||||
```bash
|
||||
cd src/TodoList.Api
|
||||
dotnet restore
|
||||
dotnet ef database update
|
||||
dotnet run
|
||||
```
|
||||
API 将在 `http://localhost:5173` 启动
|
||||
|
||||
## 📁 项目结构
|
||||
#### 3. 启动前端 Web
|
||||
```bash
|
||||
cd src/TodoList.Web
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
前端将在 `http://localhost:5173` 启动
|
||||
|
||||
### 使用说明
|
||||
- **添加任务**:在前端界面中输入任务内容,设置优先级,点击添加按钮
|
||||
- **管理任务**:查看任务列表,支持按状态过滤(全部/进行中/已完成)
|
||||
- **完成任务**:点击任务前的复选框切换完成状态
|
||||
- **删除任务**:点击删除按钮移除任务
|
||||
|
||||
## 🔧 开发指南
|
||||
|
||||
### 项目结构
|
||||
```
|
||||
TodoList/
|
||||
├── TodoList/ # 主项目目录
|
||||
│ ├── Models/ # 数据模型
|
||||
│ ├── Services/ # 服务层(数据访问、快捷键等)
|
||||
│ ├── ViewModels/ # 视图模型
|
||||
│ ├── Views/ # 界面视图
|
||||
│ ├── TodoList.csproj # 项目文件
|
||||
│ ├── BuildSetup.ps1 # 发布脚本
|
||||
│ └── setup.iss # Inno Setup 安装脚本
|
||||
├── TodoList.slnx # 解决方案文件
|
||||
├── PRD.md # 产品需求文档
|
||||
└── README.md # 项目说明文档
|
||||
├── docs/ # 文档目录
|
||||
│ ├── 产品需求文档.md
|
||||
│ ├── 产品需求文档-1.1.0.md
|
||||
│ ├── 技术设计文档.md
|
||||
│ └── 代码规范文档.md
|
||||
├── src/ # 源代码目录
|
||||
│ ├── TodoList.Core/ # 核心业务逻辑层
|
||||
│ │ ├── Entities/ # 实体类
|
||||
│ │ │ ├── Task.cs
|
||||
│ │ │ └── TaskPriority.cs
|
||||
│ │ └── Interfaces/ # 接口定义
|
||||
│ │ ├── ITaskRepository.cs
|
||||
│ │ └── ITaskService.cs
|
||||
│ ├── TodoList.Api/ # 后端 API 项目
|
||||
│ │ ├── Controllers/ # API 控制器
|
||||
│ │ │ └── TasksController.cs
|
||||
│ │ ├── Services/ # 业务服务
|
||||
│ │ │ └── TaskService.cs
|
||||
│ │ ├── Repositories/ # 数据访问层
|
||||
│ │ │ └── TaskRepository.cs
|
||||
│ │ ├── Data/ # 数据库上下文
|
||||
│ │ │ ├── TodoDbContext.cs
|
||||
│ │ │ └── Migrations/ # 数据库迁移
|
||||
│ │ ├── Models/ # 数据模型
|
||||
│ │ │ └── TaskModels.cs
|
||||
│ │ ├── Program.cs # API 入口
|
||||
│ │ └── TodoList.Api.csproj # API 项目文件
|
||||
│ ├── TodoList.Web/ # 前端 Web 项目 (Vue.js)
|
||||
│ │ ├── public/ # 静态资源
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── api/ # API 调用
|
||||
│ │ │ │ ├── client.ts
|
||||
│ │ │ │ └── tasks.ts
|
||||
│ │ │ ├── components/ # Vue 组件
|
||||
│ │ │ │ ├── TaskList.vue
|
||||
│ │ │ │ └── TaskItem.vue
|
||||
│ │ │ ├── types/ # TypeScript 类型定义
|
||||
│ │ │ │ └── task.ts
|
||||
│ │ │ ├── App.vue # 根组件
|
||||
│ │ │ └── main.ts # 应用入口
|
||||
│ │ ├── package.json # 依赖配置
|
||||
│ │ ├── vite.config.ts # Vite 配置
|
||||
│ │ └── tsconfig.json # TypeScript 配置
|
||||
│ └── TodoList.slnx # 解决方案文件
|
||||
├── .gitignore # Git 忽略文件
|
||||
└── README.md # 项目说明文档
|
||||
```
|
||||
|
||||
### API 端点
|
||||
- `GET /api/tasks` - 获取任务列表
|
||||
- `GET /api/tasks/{id}` - 获取单个任务
|
||||
- `POST /api/tasks` - 创建任务
|
||||
- `PUT /api/tasks/{id}` - 更新任务
|
||||
- `PATCH /api/tasks/{id}/complete` - 切换完成状态
|
||||
- `DELETE /api/tasks/{id}` - 删除任务
|
||||
|
||||
## 🎯 核心模块说明
|
||||
|
||||
### QuickEntryWindow
|
||||
快速记录窗口,通过全局快捷键唤起,提供极简的任务输入体验。
|
||||
### TodoList.Core
|
||||
核心业务逻辑层,定义领域模型和业务规则,提供核心业务接口。
|
||||
|
||||
### MainWindow
|
||||
主界面,展示任务列表,支持任务管理和状态切换。
|
||||
### TodoList.Api
|
||||
后端 API 项目,提供 RESTful API 接口,处理业务逻辑,管理数据访问和持久化。
|
||||
|
||||
### GlobalShortcutService
|
||||
全局快捷键服务,负责注册和监听系统级快捷键。
|
||||
|
||||
### SqliteDataService
|
||||
SQLite 数据服务,实现本地数据持久化。
|
||||
### TodoList.Web
|
||||
前端 Web 项目,基于 Vue.js 3 + TypeScript,提供用户界面,通过 HTTP API 与后端通信。
|
||||
|
||||
## 🔄 版本更新
|
||||
|
||||
### 版本策略
|
||||
- 采用语义化版本号:`MAJOR.MINOR.PATCH`
|
||||
- 每次运行发布脚本自动递增 PATCH 版本
|
||||
- v1.0.0:初始 WPF 版本
|
||||
- v1.1.0:MAUI + WebView 跨平台版本
|
||||
|
||||
### 更新日志
|
||||
|
||||
| 版本 | 日期 | 描述 |
|
||||
|------|------|------|
|
||||
| 1.0.17 | 2024-01-XX | 修复发布脚本和安装路径问题 |
|
||||
| 1.0.16 | 2024-01-XX | 完善任务优先级显示 |
|
||||
| 1.0.0 | 2024-01-XX | 初始版本发布 |
|
||||
### v1.1.0 更新内容
|
||||
- 重构为 MAUI + WebView 架构
|
||||
- 实现跨平台支持
|
||||
- 使用 HTTP API 进行前后端通信
|
||||
- 采用 Vue.js 3 作为前端框架
|
||||
- 使用 SQLite 作为本地数据库
|
||||
|
||||
## 🤝 贡献指南
|
||||
|
||||
@@ -144,8 +181,8 @@ SQLite 数据服务,实现本地数据持久化。
|
||||
## 📞 联系方式
|
||||
|
||||
- 项目作者:ShaoHua
|
||||
- 项目地址:<https://git.we965.cn/Tools/TodoList>
|
||||
- 项目地址:https://git.we965.cn/Tools/TodoList
|
||||
|
||||
---
|
||||
|
||||
**TodoList** - 让任务管理更高效!
|
||||
**TodoList** - 跨平台任务管理,让效率无处不在!
|
||||
|
||||
Reference in New Issue
Block a user