内容
<img width="1496" height="847" alt="image" src="https://github.com/user-attachments/assets/3ae8bde7-b546-45e3-87a4-060f02007c34" />
一个以 Markdown 为卡片的看板。它是本地优先的:您的看板存活在浏览器中(IndexedDB),因此速度快,无需账户即可使用。同步是可选的。指向您运行的服务器,该服务器保留规范副本,并复制到每个设备上。
在浏览器中运行,作为 PWA 安装,或作为原生 macOS 应用交付。
> 浏览器存储不是永久的。应用程序要求将其清除,但这只是而为:浏览器仍然可以清除它,而“清除”始终会清除。所以本地存储视为工作副本。如果看板很重要,请运行服务器并让其保留持久副本。
## 功能
### 卡片
- **多个看板**,每个看板都有可拖动的列。可以卡片重新排序或在移动。
- 卡片是 **GitHub 风格的 Markdown**,在本地编辑:粗体、代码、链接、突出显示和任务列表在卡片标题中显示实时计数。斜杠菜单和内联建议用于格式化。
- **附件**:通过将文件拖放到上或从剪贴板;图片在内联需要 S3 兼容的存储桶)。
- **标签**:用括号括起的单词会变成彩色标签。
- **卡片链接到卡片**(wikilink):输入 `[[` 并选择一个。
- **截止日期**:设置一个,卡片会显示一个芯片,随着日期临近,颜色会变化,逾期后会变成红色。
- **即将到期** 视图从每个看板收集卡片,按截止日期排列:逾期卡片优先,然后按日期分组。
### 存储位置
- **本地优先** 存储(IndexedDB):读取和写入操作直接在浏览器中进行,而不是网络,因此界面即时且离线可用。
- **可选同步提供您控制的服务器会在后台复制到您的设备上,每隔几秒钟或按 `⌘`+`S` 同步。
- **删除可。`⌘`Z` 撤销上一次;其他操作均放入回收站。
### 运行
- 在 ** 中运行,作为 **PWA** 安装(从手机主屏幕全屏和离线使用),或Tauri macOS 应用交付,重用相同的客户端并。
- **一键自**,生成密钥并启动整个流程。
- 看板通过 [**MCP**](#mcp) 公开,因此代理可以读取和。
- **黑暗和主题**。
## 自托管自己的服务器以真正保留板并在设备之间同步,看板仅存在于浏览器中:适合试用,但您想要保留的任何```sh
curl -fsSL https://raw.githubusercontent.com/romenkova/doska/main/installo install.sh && sh
```
安装程序会要求登录名、密码(域名,生成密钥并启动您可以随时重新运行拉取更新的镜像——现有的 `.env` 文件。
<details>
<summary>或手动设置</summary>
```sh
curl -O https://raw.githubusercontent.com/romenkova/doska/main/docker-compose.selfhost.yml
curl -o .env https://raw.githubusercontent.com/romenkova/doska/main/.env.selfhost.example
# 编辑 .env 文件 — 设置 AUTH_PASSWORD、AUTH_SECRET(例如 `openssl rand -hex`),
# 和 BASE_URL(此服务器的公共源://<your-host>:)
docker compose -f docker-compose.selfhost.yml up -d
```
</details>
在 `your-host>:808 打开网页界面,并使用 `.env` 文件中的 `AUTH_LOGIN` / `AUTH_PASSWORD` 登录。要应用**,打开设置,并将服务器 URL相同的地址。
Postgres 并存活在 Docker。要在其他地方运行它,请DATABASE_URL` 指向托管实例。
- `WEB_PORT` — 网页界面的主机 `8080` `DOCKER_IMAGE_TAG`固定版本(例如 `0.4.0`)而不是。
- `DATABASE_URL` — 指向您自己的托管可选)。
- `BASE_URL` — 此服务器的公共源。Cookie 同步无需它;MCP OAuth 需要它。
> **每个服务器的单个用户:** `.env` 文件中的凭证目前是唯一帐户。
使用 [Dokploy](https://dokploy.com) 部署?使用 `docker-compose.dokploy.yml`。
### HTTPS
对于公共部署,在 `.env` 文件中设置 `DOMAIN`(首先将其 DNS 指向主机),设置 `BASE_URL=https://$DOMAIN`,并使用 `https` 配置文件启动。捆绑的 Caddy 代理获取并自动续期 Let's Encrypt 证书:
```sh
docker compose -f docker-compose.selfhost.yml --profile https up -d
```
### 备份
如果您的看板存活在捆绑的 Postgres 中,请随时将其转储到 `./backups/`:
```sh
./backup.sh
```
`install.sh` 也会在重新部署现有数据库之前自动运行此操作。使用以下命令恢复转储:
```sh
gunzip backups/doska.sql.gz | \
-f docker-compose.selfhost.yml exec -T db psql -U doska doska
```
(如果您使用托管的 `DATABASE_URL`,请通过提供商备份 — `backup.sh`过它。)
## 桌面应用
从 [Releases](https://github.com/romenkova/doska/releases) 下载最新的 macOS 版本。它封装了相同的客户端(使用 Ta自动更新。
> macOS 版本尚未签名,因此在首次请清除隔离标志:`xattr -dr com.apple.quarantine /Applications/Doska.app`。
## MCP
服务器通过 `/mcp` 将您的看板公开给 MCP 客户端(Claude Code、Claude Desktop、claude.ai),以便代理可以读取和编辑它们 — 创建卡片、勾选任务列表、移动项目到不同列:
```sh
mcp add --transport http doskayour-server/mcp首次调用时浏览器中(OAuth)。编辑操作通过相同同步表进行,因此它们会在下一次同步时到达您的。工具列在 [packages/mcp/README.md](packages/mcp 中。
## 开发
需要 **Node 22+** 和 **pnpm 11+** (参见 `.nvmrc` / ` 引擎```sh
pnpm dev # 网页 服务器,监听模式
pnpm desktop生桌面壳(Tauri)
```
服务器将同步 API 代理到本地服务器,因此同步功能无需额外设置即可端到端| 命令 | 执行操作 |
| ----------------- | -------------------------------- |
| `pnpm build` | 构建所有网页/服务器包。| `pnpm lint` |所有包。 |
| `pnpm type-check` | 类型校验所有包。 `pnpm format` | Prettier 格式化仓库。 |
| `pnpme` | 运行 Playwright 端。 |
##
参见 [LICENSE)。