Hướng dẫn phát triển
Hướng dẫn này bao gồm việc thiết lập môi trường phát triển để đóng góp cho Kerminal.
Yêu cầu
Đảm bảo bạn đã cài đặt những thứ sau:
| Công cụ | Phiên bản | Mục đích |
|---|---|---|
| Node.js | 20+ | Phát triển frontend |
| Rust | Stable mới nhất | Backend (Tauri) |
| Tauri CLI | Mới nhất | Công cụ build |
Cài đặt Rust
bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/envCài đặt Tauri CLI
bash
cargo install tauri-cliDependencies theo nền tảng
Linux (Debian/Ubuntu)
bash
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-devLinux (Arch Linux)
bash
sudo pacman -S webkit2gtk \
base-devel \
curl \
wget \
file \
openssl \
appmenu-gtk-module \
libappindicator-gtk3 \
librsvgLinux (Fedora)
bash
sudo dnf install webkit2gtk4.1-devel \
openssl-devel \
curl \
wget \
file \
libxdo-devel \
libappindicator-gtk3-devel \
librsvg2-develmacOS
bash
xcode-select --installWindows
Cài đặt Visual Studio Build Tools với workload C++.
Bắt đầu
Clone Repository
bash
git clone https://github.com/klpod221/kerminal.git
cd kerminalCài đặt Dependencies
bash
npm installChế độ phát triển
Lựa chọn 1: Tauri + Vue 3 (Mặc định)
bash
npm run tauri devLệnh này sẽ:
- Khởi động Vite dev server (hot reload)
- Compile backend
kerminal-tauri - Mở cửa sổ ứng dụng Tauri
Lựa chọn 2: Giao diện Native thuần Rust (Iced)
bash
cargo run -p kerminal-gui
# Hoặc dùng script npm
npm run gui:devBuild production
bash
npm run tauri buildOutput sẽ ở target/release/bundle/.
Cấu trúc dự án
Kerminal được tổ chức thành cấu trúc module src/ hiện đại và tinh gọn:
kerminal/
├── Cargo.toml # Định nghĩa Root Cargo Workspace
├── src/
│ ├── core/ # Domain core & business logic (thuần Rust, không phụ thuộc Tauri)
│ │ └── src/
│ │ ├── core/ # PTY, SSH, Xác minh Host key
│ │ ├── database/ # Providers SQLite, Postgres, MySQL, MongoDB & sync
│ │ ├── services/ # SFTP, Sync, Recording, Tunnel, Terminal services
│ │ ├── models/ # Domain models & requests/responses
│ │ └── events.rs # CoreEventEmitter trait & implementations
│ ├── tauri/ # Tầng adapter Tauri v2 & IPC binary streaming
│ │ ├── src/commands/ # Tauri IPC commands & binary streaming
│ │ └── tauri.conf.json # Cấu hình app Tauri
│ └── vue/ # Frontend Vue 3 (Xterm.js Canvas, Pinia, TailwindCSS)
├── docs/ # Tài liệu VitePress
├── public/ # Tài nguyên tĩnh
└── package.json # Node.js dependenciesCông nghệ chính
Frontend
| Công nghệ | Mục đích |
|---|---|
| Vue 3 | UI framework |
| TypeScript | Type safety |
| Pinia | State management |
| xterm.js | Terminal emulation |
| TailwindCSS | Styling |
Backend
| Công nghệ | Mục đích |
|---|---|
| Tauri v2 | Desktop framework |
| Tokio | Async runtime |
| russh | SSH implementation |
| SQLx | Database access |
| AES-GCM | Encryption |
Code Style
Frontend (TypeScript/Vue)
- Sử dụng Composition API với
<script setup> - Tuân theo Vue 3 style guide
- Sử dụng Prettier để format
bash
npm run prettyBackend (Rust)
- Tuân theo Rust idioms
- Sử dụng
cargo fmtđể format - Chạy
cargo clippyđể kiểm tra lints
bash
cargo fmt
cargo clippyTesting
Frontend Tests
bash
# Sắp ra mắt
npm run testBackend Tests
bash
# Chạy tests cho toàn bộ workspace crates
cargo test --workspace
# Hoặc test riêng crate kerminal-core
cargo test -p kerminal-coreĐóng góp
Workflow
- Fork repository
- Tạo feature branchbash
git checkout -b feature/tinh-nang-moi - Thực hiện thay đổi
- Chạy tests và linting
- Commit với message mô tảbash
git commit -m 'Add tinh nang moi' - Push lên fork của bạnbash
git push origin feature/tinh-nang-moi - Mở Pull Request
Commit Messages
Tuân theo conventional commits:
feat:Tính năng mớifix:Sửa lỗidocs:Tài liệustyle:Định dạngrefactor:Tái cấu trúc codetest:Testschore:Bảo trì
Hướng dẫn Pull Request
- Mô tả rõ ràng các thay đổi
- Liên kết các issue liên quan
- Bao gồm screenshot cho thay đổi UI
- Cập nhật tài liệu nếu cần
- Đảm bảo tất cả checks đều pass
Debugging
Frontend
Sử dụng Vue DevTools browser extension để debug Vue.
Backend
Bật debug logging:
bash
RUST_LOG=debug npm run tauri devNetwork
Để debug SSH, bật verbose SSH output trong development builds.
Build cho Release
Tất cả nền tảng
bash
npm run tauri buildNền tảng cụ thể
bash
# Linux
npm run tauri build -- --target x86_64-unknown-linux-gnu
# Windows
npm run tauri build -- --target x86_64-pc-windows-msvc
# macOS (Intel)
npm run tauri build -- --target x86_64-apple-darwin
# macOS (Apple Silicon)
npm run tauri build -- --target aarch64-apple-darwin