内容
# 控制台
> 一个本地优先的**个人仪表盘**,用于管理您正在处理的所有事务 —— 工作搜索、兼职工作、项目、收入、预算、时间以及习惯 —— 所有这些都集中在一个 calm 的、以键盘驱动的控制台中。您的数据存储在机器上的纯 JSON 文件中。无需账号,无需后端,无需跟踪。

使用 **Next.js (App Router) · React · TypeScript · Tailwind CSS v4** 构建。它完全在您的笔记本电脑上运行 —— 每个记录都是 `data/` 目录下的一个 JSON 文件,您拥有并可以备份、手动编辑或任意同步。
---
## ✦ 功能
- **概览** — 一个日常登陆页面:每个区域的统计卡片、一个统一的“即将到期”列表(截止日期、后续行动、里程碑、班次和发票合并在每个模块中)、工作流程、习惯连续记录以及兼职工作焦点。
- **日历** — 一个月视图,聚合了所有有日期的项目,以及今日 / 待办事项议程。桌面端显示事件芯片,移动端显示圆点。
- **工作搜索** — 一个看板工作流(已保存 → 已申请 → 面试中 → 已提供机会 → 已拒绝),带有下一次行动提醒和截止日期颜色标记。
- **兼职工作** — 一个任务板(待做 / 进行中 / 阻塞 / 已完成),带有优先级和截止日期,用于您的自由职业 / 客户工作。
- **客户(CRM)** — 一个潜在客户 → 活跃 → 过去的管道,位于兼职工作下。每个客户都有联系信息、下一次跟进日期(逾期高亮显示)、交互日志(笔记 / 通话 / 电子邮件 / 会议)以及其关联项目和发票的实时计数。
- **项目** — 每个项目都是一个独立的工作空间:一个带有子任务清单的 **任务** 看板,一个 **时间线**,用于记录里程碑,以及 **文档**(外部链接或上传到您的笔记本电脑的文件)。包含可重复使用的 **项目模板**。
- **收入** — 带有草稿 / 已发送 / 已支付状态的发票,自动检测逾期,以及未结 / 本月已支付 / 今年已支付总额。
- **预算** — 按类别限制的每月支出,带有进度条(超出时为红色),以及净现金流(收入 - 支出)。
- **兼职** — 一个简单的带有每周小时数的计时日志。
- **个人** — 习惯连续记录(带有“今日已完成”切换)以及目标和待办事项。
- **快速添加** — 在任意位置按下 **`N`**(或 `⌘/Ctrl+K`),即可捕获到任意模块,无需离开页面。
- **拖放** — 在板块列之间移动卡片(支持指针或全键盘);更改会乐观地保存。
- **浅色和深色模式** — 一个侧边栏切换;每个主题都有其自己的设计调色板,而非简单反转。默认跟随系统偏好,无闪烁加载。
- **从 Claude 控制** — 一个捆绑的 **MCP 服务器** 允许任意 Claude 会话以纯语言读取和更新仪表盘(见下文)。
---
## 📸 截图
| | |
| --- | --- |
| **项目** — 任务、时间线和文档 | **预算** — 类别和净值 |
|  |  |
| **工作搜索** — 看板工作流 | **日历** — 所有有日期的项目 |
|  |  |
**浅色和深色**,设计为独立的调色板:
| 深色 | 浅色 |
| --- | --- |
|  |  |
---
## 🚀 快速开始
```bash
git clone <your-repo-url> console
cd console
npm install
npm run dev
```
打开 **http://localhost:3000**。它附带中立的示例数据,因此不会为空白 —— 通过删除 `data/` 中的文件(它会从 `data.seed/` 重新填充)或直接在 UI 中编辑 / 删除记录来清除模块。
---
## 🤖 从 Claude 控制(MCP)
仓库附带一个 **MCP 服务器**([`mcp/server.mts`](mcp/server.mts)),因此任意 Claude 会话都可以通过纯语言读取和更新您的仪表盘 —— “在 Acme 添加工作”,“从 Brand 模板创建项目”,“记录 40 美元的杂货支出”,“这个月的预算怎么样?”它写入相同的 `data/*.json` 文件,因此更改会在下一次仪表盘刷新时出现。无需开发服务器。
它暴露了大约 44 个工具:`get_overview`、`list/add/update/delete` 用于工作、兼职任务、兼职、个人、项目、发票和客户,以及 `add_project_task`(带有子任务)、`add_milestone`、`add_project_link`、`add_invoice`、`create_project_from_template`、`add_expense`、`get_budget`、`log_client_interaction` 等。
**Claude 代码** — 已经通过 [`.mcp.json`](.mcp.json) 连接。 在 Claude 代码会话中打开仓库,在提示时批准 `console` 服务器,然后直接询问。
**Claude 桌面版** — 将以下内容添加到其 MCP 配置(`~/Library/Application Support/Claude/claude_desktop_config.json` 在 macOS 上),使用此文件夹的**绝对路径**,然后重启 Claude 桌面版:
```json
{
"mcpServers": {
"console": {
"command": "npx",
"args": ["tsx", "mcp/server.mts"],
"cwd": "/absolute/path/to/console"
}
}
}
```
使用 `npm run mcp` 独立运行它以进行调试。
---
## 🗂 组织结构
| 路径 | 内容 |
| --- | --- |
| `app/page.tsx` | 概览 — 聚合每个模块 |
| `app/calendar/` · `app/jobs/` · `app/sidework/` | 日历、工作流程、兼职工作板块 |
| `app/sidework/clients/` | 客户 CRM — 潜在客户 / 活跃 / 过去的管道,带有交互日志 |
| `app/projects/` | 项目列表 + 每个项目页面(`[id]`)和模板 |
| `app/income/` · `app/budget/` · `app/part-time/` · `app/personal/` | 资金、时间和习惯 |
| `app/api/files/[...path]/` | 从 `data/uploads/` 提供上传的文件(路径遍历保护) |
| `lib/store.ts` | 文件支持的 JSON 存储(读取 / 写入 / 更新 / 删除) |
| `lib/types.ts` · `lib/meta.ts` | 数据模型和共享标签 / 颜色 |
| `components/ui/` · `components/widgets/` | UI 原语和可重用组件 |
| `mcp/server.mts` | MCP 服务器 |
| `data/` | 您的实时数据(git 忽略) |
| `data.seed/` | 示例数据,在首次运行时复制到 `data/` |
### 数据和存储
每个模块都是 `data/<module>.json` 下的一个 JSON 数组。在首次读取时,会从 `data.seed/` 中填充缺失的文件。每次更改都会通过写入文件原子性的服务器操作进行,因此编辑可以在重启后存活。要清除模块,请删除其文件(它会重新填充)或手动编辑。
### 设计
一种 calm 的“控制台”美学:每个模块都有一个强调色和技术字体系统 —— **Space Grotesk**(显示),**Inter**(正文),**JetBrains Mono**(所有数据 / 标签,表格数字)。图标在整个过程中都是 [Lucide](https://lucide.dev)。主题令牌(浅色和深色)位于 [`app/globals.css`](app/globals.css)。
---
## 🔧 配置
- **货币** — 默认 `USD`; 在 [`lib/invoices.ts`](lib/invoices.ts) 中更改 `DEFAULT_CURRENCY`。
- **模块** — 通过创建 `app/<name>/`,带有 `page.tsx`、`actions.ts` 和客户端组件,以及 `lib/types.ts` 中的类型和 `Collections` 条目来添加一个模块。概览和日历从所有集合中读取,因此新模块可以直接接入。
- **身份验证** — 无。它是本地的,单用户。要部署它,请添加密码门控并将存储移离本地文件。
---
## 🧱 技术
Next.js 16 · React 19 · TypeScript · Tailwind CSS v4 · lucide-react · dnd-kit · `@modelcontextprotocol/sdk`.
## License
[MIT](LICENSE) — 免费使用、修改和分享。