# DeskBloom **Repository Path**: chanalbert/desk-bloom ## Basic Information - **Project Name**: DeskBloom - **Description**: DeskBloom 致力于为用户提供精致、高效的桌面生产力体验。采用 macOS/iOS 设计风格,界面简洁优雅,交互流畅自然。核心特色是「桌面钉住」功能——将待办组钉在桌面上,信息常驻可见,随时掌控。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-15 - **Last Updated**: 2026-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DeskBloom 🌸 DeskBloom 是一款精致的桌面效率工具,融合 macOS 风格设计语言(毛玻璃效果、圆角卡片、交通灯窗口控制、流畅动画),基于 Electron 构建。核心特色是「桌面钉住」功能——将待办组或备忘录以独立悬浮窗钉在桌面上,信息常驻可见。 ## 功能特性 ### 🏠 概览 - 待办完成统计、今日计划概览 - 天气信息展示(基于 Open-Meteo API) - 当前时间与日期显示 ### ✅ 待办管理 - 待办分组管理,支持自定义图标和颜色 - 任务优先级标记(low / normal / high) - 截止日期设置 - 拖拽排序 - 桌面钉住——待办组以独立悬浮窗钉在桌面常驻可见 ### 📅 日程计划 - 日历视图(月视图 / 年视图),直观查看日程安排 - 计划颜色标签与分类 - 干系人管理 - 全天 / 时段计划 - 日历拖拽选区创建计划 ### 📝 备忘录 - 富文本编辑与预览 - 颜色标签分类 - 桌面钉住 ### 🧮 计算器 - 基础计算功能 - 计算历史记录(自动清理超限记录) ### 🍅 番茄钟 - 番茄工作法计时器 ### ⚙️ 设置 - 深色 / 浅色主题切换 - 天气城市配置 - 数据导入 / 导出 ### 🎨 界面体验 - macOS 风格设计(毛玻璃效果、圆角卡片、交通灯窗口控制) - 深色 / 浅色主题切换 - 流畅动画过渡(Framer Motion) - 全局搜索(Cmd+K / Ctrl+K) ## 技术栈 | 类别 | 技术 | |------|------| | 桌面框架 | Electron 35 | | 前端框架 | Next.js 16 + React 19 | | UI 组件 | shadcn/ui + Radix UI | | 样式方案 | Tailwind CSS 4 | | 状态管理 | Zustand 5 | | 数据请求 | TanStack React Query 5 | | 数据库 | SQLite + Prisma ORM 6 | | 类型校验 | TypeScript 5 + Zod 4 | | 动画效果 | Framer Motion 12 | | 图标 | Lucide React | | 表单管理 | react-hook-form 7 | | 日期处理 | date-fns 4 | | 拖拽排序 | @dnd-kit | | Markdown | @mdxeditor/editor + react-markdown | | 图表 | Recharts | | 打包工具 | electron-builder 26 | ## 开发运行 ### 环境要求 - **Node.js** >= 18 - **Bun** >= 1.0(推荐使用 Bun 作为包管理器和运行时) - **Git** ### 安装依赖 ```bash bun install ``` ### 初始化数据库 ```bash # 推送 Prisma Schema 到数据库 bun run db:push # 生成 Prisma Client bun run db:generate ``` ### 启动开发服务器 ```bash # Web 开发模式 bun run dev # Electron 桌面开发模式(同时启动 Next.js 和 Electron) bun run electron:dev ``` ### 其他命令 ```bash # 代码检查 bun run lint # 数据库迁移 bun run db:migrate # 重置数据库 bun run db:reset ``` ## 部署构建 ```bash # 构建 Web 生产版本 bun run build # 启动 Web 生产服务器 bun run start # 构建 Electron 桌面安装包 bun run electron:build ``` ## 项目结构 ``` deskbloom/ ├── electron/ # Electron 主进程 │ ├── main.js # 生产环境主进程入口 │ ├── dev.js # 开发环境主进程入口 │ └── preload.js # Preload 脚本(IPC 桥接) ├── src/ # Next.js 前端代码 │ ├── app/ # App Router 页面与 API │ │ ├── page.tsx # 首页(单页应用入口) │ │ ├── layout.tsx # 根布局 │ │ ├── globals.css # 全局样式 │ │ ├── pinned-widget/ # 桌面钉住窗口页面 │ │ │ ├── layout.tsx # 钉住窗口布局(ThemeProvider) │ │ │ └── page.tsx # 钉住窗口内容 │ │ └── api/ # API Routes │ │ ├── todos/ # 待办 API │ │ │ └── groups/ # 待办分组 API │ │ ├── plans/ # 计划 API │ │ ├── memos/ # 备忘录 API │ │ ├── calc-history/ # 计算器历史 API │ │ ├── settings/ # 设置 API │ │ ├── time/ # 时间 API │ │ └── weather/ # 天气 API │ │ └── geocode/ # 城市搜索 API │ ├── components/ # 组件 │ │ ├── ui/ # shadcn/ui 基础组件 │ │ ├── dashboard/ # 概览页 │ │ ├── todo/ # 待办组件 │ │ ├── plan/ # 计划组件 │ │ ├── memo/ # 备忘录组件 │ │ ├── calculator/ # 计算器组件 │ │ ├── pomodoro/ # 番茄钟组件 │ │ ├── settings/ # 设置组件 │ │ ├── search/ # 全局搜索组件 │ │ ├── app-sidebar.tsx # 应用侧边栏 │ │ └── theme-provider.tsx # 主题提供者 │ ├── hooks/ # 自定义 Hooks │ ├── lib/ # 工具库 │ │ ├── db.ts # Prisma 客户端实例 │ │ ├── store.ts # Zustand 全局状态 │ │ └── utils.ts # 通用工具函数 │ └── types/ # TypeScript 类型定义 │ └── electron.d.ts # Electron API 类型声明 ├── prisma/ # Prisma Schema │ └── schema.prisma # 数据库 Schema 定义 ├── db/ # SQLite 数据库文件 ├── public/ # 静态资源 ├── docs/ # 项目文档 ├── package.json ├── next.config.ts ├── tailwind.config.ts └── tsconfig.json ``` ## 贡献指南 欢迎参与 DeskBloom 的开发!请遵循以下步骤: 1. **Fork 本仓库** — 点击右上角 Fork 按钮 2. **创建特性分支** — `git checkout -b feature/your-feature-name` 3. **提交变更** — `git commit -m 'Add some feature'` 4. **推送分支** — `git push origin feature/your-feature-name` 5. **创建 Pull Request** — 描述你的变更内容 ### 开发规范 - 使用 **TypeScript** 编写所有代码,确保类型安全 - 遵循 **ESLint** 规则,提交前运行 `bun run lint` 检查代码 - 组件开发遵循 **shadcn/ui** 风格指南 - 提交信息遵循 [Conventional Commits](https://www.conventionalcommits.org/) 规范 - 新功能请添加对应的类型定义和文档说明 ### Bug 反馈 如果你发现了 Bug,请通过 GitHub Issues 提交,包含以下信息: - 操作系统和版本 - 问题描述与复现步骤 - 期望行为与实际行为 - 截图或日志(如适用) ## License [MIT](./LICENSE)