BotApp is the Tauri-based desktop wrapper for General Bots, providing native desktop and mobile capabilities on top of the pure web UI from botui.
botui (pure web) botapp (Tauri wrapper)
┌─────────────────┐ ┌─────────────────────────┐
│ suite/ │◄─────│ Loads botui's UI │
│ minimal/ │ │ + injects app-only │
│ shared/ │ │ features via JS │
│ │ │ │
│ No Tauri deps │ │ Tauri + native APIs │
└─────────────────┘ └─────────────────────────┘
- botui: Pure web UI with zero native dependencies. Works in any browser.
- botapp: Wraps botui with Tauri for desktop/mobile native features.
This separation allows:
- Same UI code for web, desktop, and mobile
- Clean dependency management (web users don't need Tauri)
- App-specific features only in the native app
BotApp adds these native capabilities to botui:
- Local File Access: Browse and manage files on your device
- System Tray: Minimize to tray, background operation
- Native Dialogs: File open/save dialogs
- Desktop Notifications: Native OS notifications
- App Settings: Desktop-specific configuration
botapp/
├── Cargo.toml # Rust dependencies (includes Tauri)
├── build.rs # Tauri build script
├── tauri.conf.json # Tauri configuration
├── src/
│ ├── main.rs # Tauri entry point
│ ├── lib.rs # Library exports
│ └── desktop/
│ ├── mod.rs # Desktop module
│ ├── drive.rs # File system commands
│ └── tray.rs # System tray functionality
├── ui/
│ └── app-guides/ # App-only HTML content
│ ├── local-files.html
│ └── native-settings.html
└── js/
└── app-extensions.js # Injected into botui's suite
- Rust 1.70+
- Node.js 18+ (for Tauri CLI)
- Tauri CLI:
cargo install tauri-cli
Linux:
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-devmacOS:
xcode-select --installWindows:
- Visual Studio Build Tools with C++ workload
- Clone both repositories:
git clone https://github.com/GeneralBots/botui.git
git clone https://github.com/GeneralBots/botapp.git- Start botui's web server (required for dev):
cd botui
cargo run- Run botapp in development mode:
cd botapp
cargo tauri devcargo tauri build --debugcargo tauri buildBinaries will be in target/release/bundle/.
BotApp injects js/app-extensions.js into botui's suite at runtime. This script:
- Detects Tauri environment (
window.__TAURI__) - Injects app-only navigation items into the suite's
.app-grid - Exposes
window.BotAppAPI for native features
Example usage in suite:
if (window.BotApp?.isApp) {
// Running in desktop app
const files = await BotApp.fs.listFiles('/home/user');
await BotApp.notify('Title', 'Native notification!');
}Available Tauri commands (invokable from JS):
| Command | Description |
|---|---|
list_files |
List directory contents |
upload_file |
Copy file with progress |
create_folder |
Create new directory |
delete_path |
Delete file or folder |
get_home_dir |
Get user's home directory |
Edit tauri.conf.json to customize:
productName: Application nameidentifier: Unique app identifierbuild.devUrl: URL for development (default:http://localhost:3000)build.frontendDist: Path to botui's UI (default:../botui/ui/suite)
AGPL-3.0 - See LICENSE for details.