# BotUI Development Prompt Guide **Version:** 6.1.0 **Purpose:** LLM context for BotUI development --- ## Project Overview BotUI is a **dual-mode UI application** built in Rust that runs as either a desktop app (Tauri) or web server (Axum). All business logic is in **botserver** - BotUI is purely presentation + HTTP bridge. ### Workspace Position ``` botui/ # THIS PROJECT - Web/Desktop UI botserver/ # Main server (business logic) botlib/ # Shared library (consumed here) botapp/ # Desktop wrapper (consumes botui) botbook/ # Documentation ``` --- ## LLM Workflow Strategy ### Two Types of LLM Work 1. **Execution Mode (Fazer)** - Pre-annotate phrases and send for execution - Focus on automation freedom - Less concerned with code details - Primary concern: Is the LLM destroying something? - Trust but verify output doesn't break existing functionality 2. **Review Mode (Conferir)** - Read generated code with full attention - Line-by-line verification - Check for correctness, security, performance - Validate against requirements ### LLM Fallback Strategy (After 3 attempts / 10 minutes) 1. DeepSeek-V3-0324 (good architect, reliable) 2. gpt-5-chat (slower but thorough) 3. gpt-oss-120b (final validation) 4. Claude Web (for complex debugging, unit tests, UI) --- ## Code Generation Rules ### CRITICAL REQUIREMENTS ``` - BotUI = Presentation + HTTP bridge ONLY - All business logic goes in botserver - No code duplication between layers - Feature gates eliminate unused code paths - Zero warnings - feature gating prevents dead code - NO DEAD CODE - implement real functionality, never use _ for unused - All JS/CSS must be local (no CDN) ``` ### HTMX-First Frontend ``` - Use HTMX to minimize JavaScript at maximum - Delegate ALL logic to Rust server - Server returns HTML fragments, not JSON - Use hx-get, hx-post, hx-target, hx-swap attributes - WebSocket via htmx-ws extension for real-time - NO custom JavaScript where HTMX can handle it ``` ### Local Assets Only All external libraries are bundled locally - NEVER use CDN: ``` ui/suite/js/vendor/ ├── htmx.min.js # HTMX core ├── htmx-ws.js # WebSocket extension ├── htmx-json-enc.js # JSON encoding ├── marked.min.js # Markdown parser ├── gsap.min.js # Animation (minimal use) ├── alpinejs.min.js # Alpine.js (minimal use) └── livekit-client.umd.min.js # LiveKit video ui/minimal/js/vendor/ └── (same structure) ``` ```html ``` ### Dependency Management ``` - Use diesel for any local database needs - After adding to Cargo.toml: cargo audit must show 0 warnings - If audit fails, find alternative library - Minimize redundancy - check existing libs before adding new ones ``` ### Documentation Rules ``` - Rust code examples ONLY allowed in architecture/gbapp documentation - Scan for ALL_CAPS.md files created at wrong places - delete or integrate - Keep only README.md and PROMPT.md at project root level ``` --- ## Architecture ### Dual Modes | Mode | Command | Description | |------|---------|-------------| | Web | `cargo run` | Axum server on port 3000 | | Desktop | `cargo tauri dev` | Tauri native window | ### Code Organization ``` src/ ├── main.rs # Entry point - mode detection ├── lib.rs # Feature-gated module exports ├── http_client.rs # HTTP wrapper for botserver (web-only) ├── ui_server/ │ └── mod.rs # Axum router + UI serving (web-only) ├── desktop/ │ ├── mod.rs # Desktop module organization │ ├── drive.rs # File operations via Tauri │ ├── tray.rs # System tray infrastructure │ └── stream.rs # Streaming operations └── shared/ └── state.rs # Shared application state ui/ ├── suite/ # Main UI (HTML/CSS/JS) │ ├── js/vendor/ # Local JS libraries │ └── css/ # Stylesheets └── minimal/ # Minimal chat UI └── js/vendor/ # Local JS libraries ``` ### Feature Gating ```rust #[cfg(feature = "desktop")] pub mod desktop; #[cfg(not(feature = "desktop"))] pub mod http_client; ``` --- ## HTMX Patterns ### Server-Side Rendering ```html