# RAIDGuard X - GUI Client/Server Architecture A modern Rust-based GUI application for managing RAID storage systems. ## Architecture ``` ┌─────────────────────────────────────────────────────────────────────┐ │ raidguard_x_gui_client (Slint GUI) │ │ - Cross-platform UI (macOS, Windows, Linux) │ │ - TCP connection to server │ │ - Real-time data display │ └─────────────────────────┬───────────────────────────────────────────┘ │ TCP JSON Protocol (:8923) ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ raidguard_x_gui_server (Mock/Real Backend) │ │ - Provides RAID controller data │ │ - Currently serves mock data │ │ - Future: In-Band API to real RAID systems │ └─────────────────────────────────────────────────────────────────────┘ ``` ## Project Structure ``` raidguard_x_gui_server/ # Data server ├── Cargo.toml ├── src/ │ ├── main.rs # Entry point │ ├── lib.rs │ ├── server.rs # TCP server │ ├── protocol/ # JSON message protocol │ ├── handlers/ # Request handlers │ └── mock/ # Mock data provider raidguard_x_gui_client/ # GUI client ├── Cargo.toml ├── build.rs # Slint build script ├── src/ │ ├── main.rs # Entry point + Slint integration │ ├── lib.rs │ ├── app.rs # App state management │ ├── models/ # Data models │ └── protocol/ # Client protocol └── ui/ └── main_window.slint # Slint UI definition ``` ## Build Requirements - Rust 1.70+ - For GUI client: `xcode-select` (macOS) or equivalent ## Build Instructions ### Server ```bash cd raidguard_x_gui_server cargo build --release ``` Run: ```bash # Default port 8923 cargo run --release # Custom port SERVER_ADDR=127.0.0.1:8923 cargo run --release ``` ### Client ```bash cd raidguard_x_gui_client cargo build --release ``` Run: ```bash cargo run --release ``` ## Protocol ### Request Format ```json { "id": "uuid-v4", "type": "request", "action": "get_controllers", "params": {} } ``` ### Response Format ```json { "id": "uuid-v4", "type": "response", "status": "success", "data": { ... }, "error": null } ``` ### Available Actions | Action | Description | |--------|-------------| | `get_controllers` | Get all controllers | | `get_raids` | Get RAID arrays | | `get_disks` | Get physical disks | | `get_events` | Get event log | | `ping` | Health check | ## Development ### Testing the Server ```bash # Terminal 1: Start server cd raidguard_x_gui_server cargo run --release # Terminal 2: Connect with netcat nc localhost 8923 # Send request: {"id":"test","type":"request","action":"get_controllers","params":{}} # Response: {"id":"test","type":"response","status":"success","data":{"controllers":[...]}} ``` ## License Proprietary - Accusys Inc.