Files
Hua.Todo/README.md
T
ShaoHua d53828c150 feat: v1.2.0 开发进度更新
### 新增功能
- **Linux 官方支持**:新增 Hua.Todo.Avalonia 项目,正式适配 Linux 平台,同时支持 Windows 和 macOS
- **Avalonia 桌面交互**:增加托盘菜单(显示/退出)、关闭隐藏到托盘、Windows 全局热键唤起主窗口、热键配置本地持久化
- **SQLite DateTime 兼容修复**:新增 LenientUtcDateTimeStringConverter,解决历史遗留的 DateTime 脏数据解析问题
- **用户文档完善**:新增 docs/manual/新手指南.md 和 docs/manual/用户指南.md
- **部署文档**:新增 docs/manual/部署文档.md,详细说明多平台发布流程

### 优化与修复
- **发布脚本整理**:拆分/对齐各平台发布入口,新增 publish.ps1 作为统一入口
- **Windows WebView2 优化**:数据目录调整到 %LocalAppData%\Hua.Todo\WebView2,修复 Runtime 误判问题
- **MAUI 多平台构建**:在 Windows 开发机上默认仅构建 Android + Windows 目标
- **SPA 路由回落**:修复 Release 模式下 /swagger 路径的 404 问题
- **Swagger 输出**:补齐 Dynamic API 端点,避免接口缺失

### 文档更新
- **版本记录**:更新 v1.2.0 开发进度和功能列表
- **技术设计文档**:添加 Avalonia 项目架构和模块设计
- **项目结构**:更新 README.md 中的项目结构说明

### 其他变更
- 新增 Directory.Build.props 和更新 Directory.Build.targets
- 调整 src/Hua.Todo.Avalonia 项目配置和资源文件
- 更新 src/Hua.Todo.Web 前端资源文件
- 修复 src/Hua.Todo.Maui 相关配置和打包脚本
2026-04-09 21:39:07 +08:00

6.1 KiB
Raw Blame History

Hua.Todo 跨平台代办管理应用

一个基于 WebView 容器(MAUI / Avalonia+ 嵌入式 ASP.NET Core WebServer 架构开发的跨平台代办管理应用,支持 Windows、macOS、Android、iOS 和 Linux(预览)平台。通过 HTTP API 实现前后端通信,提供轻量、高效的任务管理体验。

🚀 功能特点

核心功能

  • 跨平台支持:基于 MAUI / Avalonia + WebView 架构,支持 Windows、macOS、Android、iOS 和 Linux(预览)
  • 任务管理:支持创建、编辑、删除、完成状态切换
  • 优先级管理:支持高、中、低三种优先级设置,通过颜色直观区分
  • 任务状态跟踪:清晰标记任务完成状态,支持过滤查看(全部/进行中/已完成)
  • 本地数据持久化:使用 SQLite 数据库保存数据,支持完全离线使用
  • HTTP API 通信:前后端通过 RESTful API 进行数据交互
  • 云同步(基础):支持手动配置服务端地址并登录后拉取云端任务(v1.2.0 为只读展示)

📦 安装与使用

环境要求

  • 后端
    • .NET 10 SDK
    • Visual Studio 2022 或更高版本
  • 前端
    • Node.js 18+
    • npm 或 yarn

快速开始

1. 克隆或下载项目

git clone <仓库地址>
cd Hua.Todo

2. 启动后端 API

cd src/Hua.Todo.Host
dotnet restore
dotnet run

API 将在 http://localhost:5173 启动 开发环境(ASPNETCORE_ENVIRONMENT=Development)下提供 Swagger UIhttp://localhost:5173/swagger(或 https://localhost:7175/swagger

3. 启动前端 Web

cd src/Hua.Todo.Web
npm install
npm run dev

前端将在 http://localhost:5174 启动,并自动代理 /api 请求到 http://localhost:5173

4. 启动 MAUI 客户端(Windows 三件套开发)

  • 推荐:在 Visual Studio 中将启动项目设置为 Hua.Todo.Maui,并确保 Hua.Todo.Host(5173)Hua.Todo.Web(5174) 已启动,然后按 F5 运行。
  • 也可使用脚本一键拉起 Host + Vite(并可选启动 MAUI):
.\start-dev.ps1

Windows 交付产物(安装包)

  • 运行 publish-windows.ps1 默认使用 Release 配置生成 Inno Setup 安装包:src/Hua.Todo.Maui/Output/Hua.Todo_Setup_vX.Y.Z.exe(版本号来自 Hua.Todo.Maui.csproj<Version>;根目录 Directory.Build.targets 会对 Hua.Todo.Maui 按 TargetFramework 条件配置 UseMonoRuntime:仅 Android 启用,其它目标关闭;同时会复制到 artifacts/windows/<RID>/installer/
  • 运行 publish.ps1 默认会同时发布 Windows + Linux(仅发布 Windowspublish.ps1 -Windows),且均默认使用 Release 配置。
  • 安装后主程序为:Hua.Todo.Maui.exe(快捷方式/安装后启动均指向该文件)
  • 发布产物默认使用静态资源:src/Hua.Todo.Maui/appsettings.jsonWebServer.IsUsingStatic=true
  • 前端构建产物会输出到 src/Hua.Todo.Maui/wwwroot,并随 Windows 发布复制到发布目录(嵌入式服务器从 AppContext.BaseDirectory/wwwroot 提供静态文件)

Linux 交付产物(v1.2.0

  • .tar.gz 发布脚本:publish-linux.ps1(或使用 publish.ps1 -Linux
  • Flatpak 基础结构(manifest/desktop entry/AppStream):pack/linux/

使用说明

  • 添加任务:在前端界面中输入任务内容,设置优先级,点击添加按钮
  • 管理任务:查看任务列表,支持按状态过滤(全部/进行中/已完成)
  • 完成任务:点击任务前的复选框切换完成状态
  • 删除任务:点击删除按钮移除任务

🔧 开发指南

项目结构

Hua.Todo/
├── pack/                          # 打包与交付产物(Linux/安装包等)
├── docs/                          # 文档目录
│   ├── manual/                    # 用户/开发者手册
│   └── project/                   # 项目进度/需求文档
├── src/                           # 源代码目录
│   ├── Hua.Todo.Core/              # 领域实体与基础接口
│   ├── Hua.Todo.Application/       # 业务逻辑与应用层实现
│   ├── Hua.Todo.Host/              # 后端 API 宿主项目 (Kestrel)
│   ├── Hua.Todo.Web/               # 前端 Web 项目 (Vue.js 3 + Vite)
│   ├── Hua.Todo.Maui/              # 跨平台客户端项目 (Windows/Android/iOS/macOS)
│   ├── Hua.Todo.Avalonia/           # 桌面客户端项目 (Windows/macOS/Linux)
│   └── Hua.Todo.slnx           # 解决方案文件
├── .gitignore                     # Git 忽略文件
└── README.md                      # 项目说明文档

API 端点

  • GET /api/task - 获取任务列表(默认:全部)
  • GET /api/task/active - 获取未完成任务
  • GET /api/task/completed - 获取已完成任务
  • GET /api/task/{id} - 获取单个任务
  • POST /api/task - 创建任务
  • PUT /api/task - 更新任务(通过 Body 内的 id 定位)
  • PATCH /api/task/{id}/toggle - 切换完成状态
  • DELETE /api/task/{id} - 删除任务
  • GET /api/task/{parentTaskId}/subtasks - 获取子任务列表

🤝 交流与贡献

  • QQ 交流群2167048911 (Hua.Todo 交流群)
  • 项目地址Hua.Todo
  • 贡献指南:欢迎提交 Pull Request,详见 其他信息

📄 开源协议

本项目采用 AGPL-3.0 许可证。详细内容请参阅 LICENSE 文件。

📚 更多文档

用户与开发者手册

项目进度与需求


Hua.Todo - 跨平台任务管理,让效率无处不在!