Files
2026-05-28 17:26:12 +08:00

1.6 KiB

基础架构方案

前端

  • 使用 Bun 管理依赖、开发和构建。
  • 使用 React 编写 UI。
  • 使用 shadcn/Radix 作为组件基础。
  • 使用 TailwindCSS 编写样式。
  • 前端只通过协议层定义的 HTTP API 与后端通信。
  • 前端不直接读取 backend 文件,也不依赖 Python 内部实现。

协议

  • dev/protocol/ 是前后端之间的稳定边界。
  • HTTP API 使用 OpenAPI 3.1 定义。
  • 共享数据结构使用 JSON Schema 表达。
  • 前端 TypeScript 类型和 API client 应从协议生成。
  • 后端必须实现协议,而不是让协议跟随后端内部结构变化。

后端

  • 使用 Python 实现当前后端。
  • 使用 FastAPI 提供 HTTP API。
  • 使用 Pydantic v2 做数据校验和 DTO。
  • 使用 Typer 提供 CLI。
  • 使用 uv 管理 Python 环境和依赖。
  • 使用 pytest 做测试。
  • 使用 ruff 做 lint 和 format。
  • 本地状态持久化优先使用 SQLite。

后端分层

后端目录按职责划分:

dev/backend/
  src/pyxray_backend/
    api/
    cli/
    core/
    runtime/
    storage/
    subscriptions/
    xray/
  tests/
  • api/ 只负责 HTTP 适配。
  • cli/ 只负责命令行适配。
  • core/ 放核心用例逻辑。
  • runtime/ 放运行态状态、日志和生命周期管理。
  • storage/ 放本地持久化。
  • subscriptions/ 放节点订阅解析。
  • xray/ 放 Xray 下载、配置生成和进程管理。

边界原则

  • 稳定 API 契约放在 dev/protocol/
  • backend 是协议的一种实现,未来可以替换为 Rust。
  • frontend 依赖协议,不依赖 backend。
  • 不在没有明确需求前添加服务接口。