内部一共划分了五个模块,在不同的环境,模块会使用不同的信道进行通信。
在 Docker 版里,前后端会使用 websoket 通信。 而桌面端里,前后端会使用 Electron IPC 通信。 (代码是从 vs code 拷贝过来的)
1. HB PC : PC 版前端代码
2. HB Phone : 手机版前端代码
3. HB Server: NodeJs 写的后端代码
4. HB RN Shell : 用 react native 套壳
5. HB Electron Shell:用 Electron 套的壳
对外是三个产品, 由模块组成
a. HamsterBase Selfhosted: 支持 docker 部署的服务器版
1 + 2 + 3: 服务器 + 前端 + 手机版前端
b. HamsterBase Desktop: 支持独立运行的桌面版
1 + 3 + 4 + a (可以在桌面端启动服务端)
c. HamsterBase Pocket: 支持独立运行的手机版
2 + 3 + a
因为项目本体是 js 全栈,不依赖任何闭源的二进制,所以兼容性非常好,不会因为系统升级而失效。
项目本身前后端一体,不依赖任何外部服务,所以可以很好的进行 E2E 测试,每次发布之前都会跑一遍集成测试,修复 bug 之后也会补充对应的测试用例。