40 lines
1.2 KiB
Markdown
40 lines
1.2 KiB
Markdown
# 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`)
|