# Tech Stack ## Backend - **Language:** Rust - **Framework:** Poem (HTTP + WebSocket + OpenAPI) - **Database:** SQLite via sqlx + rusqlite - **State:** BFT CRDT replicated document backed by SQLite - **Agents:** Claude Code CLI spawned in PTY pseudo-terminals - **Package manager:** cargo ## Frontend - **Language:** TypeScript + React - **Build:** Vite - **Package manager:** npm - **Testing:** Vitest (unit), Playwright (e2e) ## Deployment - Single Rust binary with embedded React frontend (rust-embed) - Three modes: standard server, headless build agent (`--rendezvous`), multi-project gateway (`--gateway`) - Docker container with OrbStack recommended on macOS ## Project Layout ``` server/src/ — Rust backend frontend/src/ — React frontend crates/bft-json-crdt/ — CRDT library .huskies/ — Pipeline config, agent config, specs script/ — test, build, lint scripts docker/ — Dockerfile and docker-compose website/ — Static marketing/docs site ``` ## Quality Gates All enforced by `script/test`: 1. Frontend build (`npm run build`) 2. Rust formatting (`cargo fmt --all --check`) 3. Rust linting (`cargo clippy -- -D warnings`) 4. Rust tests (`cargo test`) 5. Frontend tests (`npm test`)