cosmicspork/svastha
GitHub: cosmicspork/svastha
一款自主托管、端到端加密、本地优先的个人医疗记录管理应用,用户通过助记词掌控全部健康数据的加密密钥。
Stars: 0 | Forks: 0
# Svastha
[](https://github.com/cosmicspork/svastha/actions/workflows/ci.yml)
自主托管、端到端加密、本地优先的个人医疗记录。你的
健康历史以加密形式保存在你的设备上,通过无法读取它的中继进行同步,并且完全归你所有,由你决定如何保留、携带和分享。
## 关于名称
**Svastha** 来自梵文 स्वस्थ (*sva-stha*):*sva* 意为“自我”,
*stha* 意为“安住”或“屹立”。它意味着立足于自我,这也是
阿育吠陀中代表健康的词汇。自我加上健康就是其核心理念:你的记录,
由你掌控。
## 为什么
患者通常是唯一掌握自己完整诊疗情况的人,
无论是因为记录是以纸质形式交给他们,还是因为记录分散在
各自只能看到部分信息的门户网站中。Svastha 提供了一个汇聚这些信息并完全拥有它们的地方,使用仅由你持有的助记词派生出的密钥进行加密,
因此无论谁运行同步基础设施(包括托管的 Svastha),都一无所知,
也不持有任何数据。
## 技术栈
- **Rust 核心**:一个共享的 `core` crate(加密信封和事件 schema)
编译为原生和 WASM,一个零知识 `relay`,以及一个受信任的 `node`。
- **Svelte 5 PWA**(bun + Vite),本地优先,通过 WASM 调用 `core`。
- **AGPL-3.0**。
## 布局
| 路径 | 说明 |
|---|---|
| `crates/core` | 信任合约:加密信封和事件 schema。原生和 WASM。 |
| `crates/svastha` | 总括性 crate,以纯粹的 `svastha` 名称重新导出 `core`。 |
| `crates/wasm` | WASM 绑定,将 `core` 暴露给 Web 应用(作为 `@svastha/core` 发布到 npm)。 |
| `crates/relay` | 用于加密 blob 的零知识存储转发服务器。 |
| `crates/node` | 受信任的处理客户端;将推理委托给兼容 OpenAI 的 endpoint。后续版本发布。 |
| `web` | Svelte 5 PWA,本地优先,通过 WASM 调用 `core`。 |
| `spec` | 版本化的通信协议和测试向量。 |
| `fixtures` | 合成的、不含 PHI 的测试数据。 |
| `docs/ARCHITECTURE.md` | 设计的真正来源。 |
## 入门指南
Web:
```
cd web
bun install
bun run dev
```
Rust(通过 rustup):
```
brew install rustup && rustup default stable
cargo build --workspace
```
## 常见任务
方案位于 [`justfile`](justfile) 中:
```
just # list recipes
just web-dev # run the web app
just check # fmt-check + clippy + svelte-check
just test # cargo test
just all # everything CI runs
just e2e # local-only PWA <-> relay browser smoke (needs cargo + wasm-pack)
```
## 发布
发布通过
[release-please](https://github.com/googleapis/release-please) 自动化。
`main` 分支上的[约定式提交](https://www.conventionalcommits.org)会累积
成一个发布 PR;合并它会打上版本标签(`v0.0.x`),创建 GitHub
发布,并将五个 crate 发布到 crates.io,将 wasm SDK 作为
[`@svastha/core`](https://www.npmjs.com/package/@svastha/core) 发布到 npm。
在 1.0 版本之前,功能和修复会提升补丁版本号。
标签:Rust, SBOM分析, Svelte, WASM, 医疗记录, 可视化界面, 端到端加密, 网络流量审计, 自动化攻击, 零知识