Files
EveryPublish/docs/tech-stack.md
T

2.2 KiB
Raw Blame History

EveryPublish 技术栈定版(唯一权威来源)

2026-08-20 · 其他文档中与本文件冲突之处,以本文件为准。

1. 总览

端 层 技术
网页端 页面(UI) React 18 + TypeScript + TDesign React(Tencent starter,MIT,已拉取 apps/web)
网页端 服务端/API Go:gin + coder/websocket + asynq + GORM + argon2
客户端 UI 壳 WinUI 3(C# / .NET 8)
客户端 核心 Go:WSS 客户端 + go-rod(CDP)+ 凭据保险库
数据 数据库 MySQL 8.x(GORM + go-sql-driver/mysql;迁移 golang-migrate)
数据 队列/缓存 Redis 7(asynq)
存储 一期 服务器本地盘(签名直链下载)
存储 二期 OSS 双桶(StorageDriver 抽象预留)

2. 「网页端与后端都用 Go」的说明

  • 页面层仍是 React + TDesign(starter 已拉取预览,MIT 可商用),不写自定义样式。
  • 「用 Go」指两处:网页端的服务端/API 层 与 客户端 agent-core,统一 Go 语言。
  • 二者共享同一协议 Go module(server 与 agent-core 引用同一 shared/proto 包),消息 Schema 只写一次。

3. Go 选型明细

  • Web 框架:gin
  • WebSocket:github.com/coder/websocket(原生 JSON 协议,不用 Socket.IO)
  • 任务队列:asynq(Redis)
  • ORM/DB:GORM + go-sql-driver/mysql(MySQL 8.x);迁移 golang-migrate
  • 鉴权:golang-jwt + x/crypto/argon2(用户);Ed25519 设备签名(Agent)
  • 浏览器自动化(客户端):go-rod + rod-stealth,驱动系统 Chrome/Edge
  • 常驻服务(二期):kardianos/service

4. 目录结构(monorepo)

  • web/ —— React 前端(现有 apps/web 的 starter)
  • server/ —— Go 服务器(REST + WSS 网关 + 队列 worker)
  • client/ui —— WinUI 3 壳(C#)
  • client/core —— agent-core(Go)
  • shared/ —— 协议 Go module(server 与 core 共用)
  • tools/ —— 联调诊断(diag-connection.mjs 等)

5. 版本与工具

  • Go 1.23+;Node 20 LTS(前端,starter 依赖升级见交付文档 D1);.NET 8;MySQL 8.x;Redis 7
  • 包管理:pnpm(前端)、go mod(后端)
  • CI:GitHub Actions(前端构建 / Go 单测 / WinUI 打包)