AeThex-OS/docs/TAURI_SETUP.md

231 lines
5.2 KiB
Markdown

# Tauri Desktop App Setup
AeThex-OS has been configured to run as a native desktop application using Tauri (Rust + WebView).
## Prerequisites
### 1. Install Rust
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
```
### 2. Install System Dependencies
**Linux (Ubuntu/Debian):**
```bash
sudo apt update
sudo apt install -y libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev
```
**macOS:**
```bash
# Xcode Command Line Tools should be installed
xcode-select --install
```
**Windows:**
- Install [Microsoft Visual Studio C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
- Install [WebView2](https://developer.microsoft.com/en-us/microsoft-edge/webview2/)
## Project Structure
```
AeThex-OS/
├── client/ # React frontend
├── server/ # Node.js backend
├── src-tauri/ # Tauri Rust backend
│ ├── src/ # Rust source code
│ ├── icons/ # App icons
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri configuration
└── dist/public/ # Built frontend (used by Tauri)
```
## Development
### Run Desktop App in Development Mode
```bash
npm run tauri:dev
```
This will:
1. Start the Vite dev server (client)
2. Launch the Tauri window with hot-reload
### Run Web Version (Original)
```bash
# Terminal 1: Start backend
npm run dev
# Terminal 2: Start frontend
npm run dev:client
```
## Building
### Build Desktop App
```bash
npm run tauri:build
```
The built app will be in `src-tauri/target/release/bundle/`:
- **Linux**: `.deb`, `.appimage`
- **macOS**: `.dmg`, `.app`
- **Windows**: `.msi`, `.exe`
### Build Web Version
```bash
npm run build
```
## Configuration
### Tauri Configuration (`src-tauri/tauri.conf.json`)
Key settings:
- **Window size**: 1280x800 (configurable)
- **Dev URL**: http://localhost:5000 (Vite dev server)
- **Build output**: `dist/public` (Vite build output)
- **App identifier**: `com.aethex.os`
### Available Scripts
- `npm run tauri:dev` - Run desktop app in dev mode
- `npm run tauri:build` - Build desktop app
- `npm run tauri` - Access Tauri CLI directly
## Features Enabled
✅ Hot Module Replacement (HMR) in dev mode
✅ System tray support
✅ Native window controls
✅ Multi-platform builds
✅ Auto-updater ready
## Architecture
### Hybrid Architecture
AeThex-OS uses a **hybrid architecture**:
1. **Frontend (Client)**: React + Vite - runs in the webview
2. **Backend (Server)**: Node.js + Express - can run locally or remotely
3. **Desktop (Tauri)**: Rust - provides native APIs and window management
### Communication Flow
```
User Interface (React)
Tauri WebView APIs
Rust Backend (Tauri)
System APIs (File, Window, etc.)
```
For server communication, the app still uses HTTP/WebSocket to your Node.js backend.
## Adding Tauri Features
### Example: Add File System Access
1. **Enable plugin in Cargo.toml**:
```toml
[dependencies]
tauri-plugin-fs = "2"
```
2. **Register in src-tauri/src/main.rs**:
```rust
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_fs::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
```
3. **Use in frontend**:
```typescript
import { readTextFile } from '@tauri-apps/plugin-fs';
const contents = await readTextFile('file.txt');
```
## Tauri Plugins Available
- `tauri-plugin-fs` - File system access
- `tauri-plugin-shell` - Run shell commands
- `tauri-plugin-dialog` - Native dialogs
- `tauri-plugin-notification` - System notifications
- `tauri-plugin-http` - HTTP client
- `tauri-plugin-sql` - Local database
- `tauri-plugin-store` - Key-value storage
## Security
Tauri apps are more secure than Electron because:
- Uses system webview (smaller bundle)
- Rust backend (memory safe)
- No Node.js in renderer (reduced attack surface)
- CSP policies enforced
## Troubleshooting
### Linux: Missing dependencies
```bash
sudo apt install libwebkit2gtk-4.1-dev
```
### macOS: Code signing issues
```bash
# For development
codesign --force --deep --sign - src-tauri/target/release/bundle/macos/AeThex-OS.app
```
### Windows: WebView2 not found
Download and install from: https://developer.microsoft.com/en-us/microsoft-edge/webview2/
### Port conflicts
Change dev port in `src-tauri/tauri.conf.json`:
```json
"devUrl": "http://localhost:5000"
```
## Distribution
### Linux
- `.deb` - Debian/Ubuntu packages
- `.AppImage` - Universal Linux binary
### macOS
- `.app` - Application bundle
- `.dmg` - Disk image installer
### Windows
- `.msi` - Windows installer
- `.exe` - Portable executable
## Next Steps
1. ✅ Tauri configured
2. 🔄 Test development mode: `npm run tauri:dev`
3. 🔄 Customize app icons in `src-tauri/icons/`
4. 🔄 Build for distribution: `npm run tauri:build`
5. 🔄 Add Tauri-specific features (system tray, notifications, etc.)
## Resources
- [Tauri Documentation](https://tauri.app/)
- [Tauri Plugins](https://tauri.app/plugin/)
- [Tauri API Reference](https://tauri.app/reference/)
- [Tauri Examples](https://github.com/tauri-apps/tauri/tree/dev/examples)