- Node.js 20+
- Yarn 4+ (Berry)
- Git
本项目使用 yarn 4 进行项目管理,请按照如下说明安装。
Node.js 16.10+ 内置了 Corepack,可以直接使用:
# 启用 Corepack
corepack enable
# 设置 Yarn 版本
corepack prepare yarn@4.1.1 --activate
# 1. 创建项目目录
mkdir my-project
cd my-project
# 2. 初始化 Yarn
yarn init -2
# 3. 验证安装
yarn --version
# 如果遇到权限问题,可能需要使用 sudo
sudo corepack enable
# 验证安装
yarn --version
# 以管理员身份运行 PowerShell
corepack enable
# 验证安装
yarn --version
# 安装基础构建工具和依赖
sudo apt-get update
sudo apt-get install -y \
cmake \
build-essential \
gfortran \
libfftw3-dev \
libboost-all-dev \
pkg-config
# ARM64 架构额外依赖
sudo apt-get install -y \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
gfortran-aarch64-linux-gnu
sudo dpkg --add-architecture arm64
sudo apt-get update
sudo apt-get install -y \
libfftw3-dev:arm64 \
libboost-all-dev:arm64
# 使用 Homebrew 安装依赖
brew install cmake fftw boost gcc pkg-config
# 设置环境变量(根据架构)
if [ "$(uname -m)" = "arm64" ]; then
# Apple Silicon (ARM64)
BREW_PREFIX="/opt/homebrew"
else
# Intel (x64)
BREW_PREFIX="/usr/local"
fi
# 确保 brew 路径在 PATH 中
echo 'export PATH="'$BREW_PREFIX'/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 设置库路径
export LIBRARY_PATH=$BREW_PREFIX/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=$BREW_PREFIX/lib:$LD_LIBRARY_PATH
- 安装 Visual Studio 2022 或更高版本(包含 MSVC 工具链)
- 安装 Intel oneAPI(包含 Intel Fortran 编译器)
- 安装 vcpkg 并配置依赖:
# 克隆 vcpkg
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
# 安装依赖
.\vcpkg install fftw3[float,threads]:x64-windows boost:x64-windows
# 集成到 Visual Studio(可选)
.\vcpkg integrate install
git clone <repository-url>
cd tx-5dr
yarn install
yarn dev
这将启动:
- 🌐 Web 客户端:http://localhost:5173
- 🔧 服务器:http://localhost:4000
EMBEDDED=true yarn dev
这将启动所有服务并打开 Electron 应用。
yarn build
yarn preview
# 构建并启动容器
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止容器
docker-compose down
# 构建镜像
docker build -t tx5dr .
# 运行容器
docker run -d \
--name tx5dr \
-p 8080:80 \
--privileged \
--device=/dev/bus/usb \
-v $(pwd)/data:/app/data \
tx5dr
- 端口映射: 容器的80端口映射到主机的8080端口
- 数据持久化:
./data
目录包含配置、日志和缓存 - USB设备: 映射USB设备以支持USB声卡和串口设备
- 音频支持: 容器具有音频设备访问权限
TX-5DR/
├─ packages/
│ ├─ shared-config/ # ESLint, TypeScript, Prettier 配置
│ ├─ contracts/ # Zod schema 和 TypeScript 类型
│ ├─ core/ # 运行时无关的工具函数
│ ├─ server/ # Fastify 服务器 + 原生插件占位符
│ ├─ web/ # Vite + React 客户端
│ ├─ electron-preload/ # contextBridge,sandbox=true
│ └─ electron-main/ # Electron 主进程
├─ package.json # 根配置和工作区
├─ turbo.json # Turborepo 配置
└─ README.md # 项目文档
shared-config ← contracts ← core ← {web, electron-preload, server}
↑
electron-main
依赖关系是无环的,遵循从底层到顶层的模式。
- 共享的 ESLint、TypeScript 和 Prettier 配置
- 为所有其他包提供一致的代码风格和类型检查
- 使用 Zod 定义的 API 契约和数据模式
- 导出 TypeScript 类型供其他包使用
- 运行时无关的核心功能
- 包含 API 客户端和通用工具函数
- 基于 Fastify 的 HTTP 服务器
- 提供 RESTful API 端点
- 包含原生插件加载的占位符代码
- 基于 Vite 和 React 18 的 Web 客户端
- 现代化的用户界面
- 调用后端 API 并展示数据
- Electron 预加载脚本
- 在沙盒环境中安全地暴露原生 API
- Electron 主进程
- 可选择性地嵌入服务器
- 管理应用窗口和生命周期
本项目采用 GNU General Public License v3.0 许可证 - 查看 LICENSE 文件了解详情。