Frontend UI for self-hosted Honcho instances — browse memories, peers, sessions, conclusions, and chat with memory context. Ships as a web app (@openconcho/web) and a Tauri desktop wrapper (@openconcho/desktop).
make is the canonical interface; it shells out to pnpm scripts which shell out to turborepo. CI calls the same targets — make help lists everything.
| Command | Purpose |
|---|---|
make bootstrap |
Install deps + Playwright Chromium (run once after clone) |
make dev-web |
Vite dev server on http://localhost:5173 |
make dev-desktop (or make dev) |
Tauri desktop app |
make build |
Turbo: build web + desktop |
make lint |
Biome check |
make typecheck |
tsc --noEmit |
make test |
Vitest (unit + integration), excludes e2e/ |
make test-e2e |
Playwright e2e (uncached) |
make check |
lint + typecheck + test |
pnpm --filter @openconcho/desktop cargo-check |
Local Rust/Tauri compile check before pushing desktop changes |
pnpm --filter @openconcho/web generate:api |
Regen src/api/schema.d.ts from openapi.json |
| Path | Purpose |
|---|---|
packages/web/ |
Vite + React 19 + TanStack Router/Query SPA |
packages/web/src/routes/ |
TanStack Router file-based routes (flat-route syntax) |
packages/web/src/components/ |
Feature components grouped by domain |
packages/web/src/api/ |
openapi-fetch client + TanStack Query hooks |
packages/web/src/lib/ |
Config (localStorage) + theme utilities |
packages/web/src/hooks/ |
Custom React hooks |
packages/web/src/test/ |
Vitest unit/integration tests + setup |
packages/web/e2e/ |
Playwright e2e specs |
packages/desktop/ |
Tauri shell that bundles the built web app |
.claude/rules/ |
Coding conventions (auto-loaded; stack-agnostic, applies to all agents) |
docs/ |
Architecture and references |
Read .claude/rules/coding-standards.md when writing or reviewing any code file.
Read .claude/rules/workflows.md for recurring task patterns.
Read docs/architecture.md for component overview, data flow, and design decisions.
- PR CI only runs the web checks.
- Rust/Tauri compile-check is local-only for now because the Linux dependency setup on GitHub Actions is too slow for routine PR validation.
Before pushing any change under packages/desktop/** or packages/desktop/src-tauri/**, run:
pnpm --filter @openconcho/desktop cargo-check
make ci-web matches current PR CI.
- No hardcoded URLs — all connection config lives in
localStorageunderopenconcho:config - TanStack Router flat-route params — always cast
paramsasas neveratnavigate()and<Link>callsites framer-motionVariants typing — importtype Variantsand annotate objects; never useas conston variant objects- Auth is optional — token header only sent when non-empty;
checkConnection()detects if auth is required - CSS variables only — no Tailwind color utilities for theme-aware colors; use
var(--text-1)etc. - Shared deps via pnpm catalog — version-pinned in
pnpm-workspace.yaml; reference as"catalog:"in package.json - Conventional commits enforced — commitlint runs in husky
commit-msg; body lines must be ≤100 chars - Releases via semantic-release —
.releaserc.json; commits land onmain, no manual version bumps - GitHub account — push under
offendingcommit(gh auth switchif needed) - Desktop preflight is local — Rust/Tauri compile-check no longer runs in PR CI; run
pnpm --filter @openconcho/desktop cargo-checkbefore pushing anypackages/desktop/**orpackages/desktop/src-tauri/**change