- Make is the canonical interface; pnpm scripts wrap turbo, make wraps pnpm - CI now calls `make ci-web` / `make ci-desktop` so local == CI - Add .nvmrc (node 24, matches CI) + engines field - Add .editorconfig and .vscode (extensions + settings) - Add `pnpm bootstrap` (deps + Playwright Chromium) - Add `dev:web` / `dev:desktop` shortcuts - CONTRIBUTING.md: lead with `make bootstrap`/`make dev-web`, link Tauri prereqs, fix wrong `pnpm dev` claim - CLAUDE.md: command table reflects make-first workflow
3.0 KiB
3.0 KiB
openconcho
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).
Commands
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/web generate:api |
Regen src/api/schema.d.ts from openapi.json |
Structure
| 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) |
docs/ |
Architecture and references |
Code Style
Read .claude/rules/coding-standards.md when writing or reviewing any code file.
Workflows
Read .claude/rules/workflows.md for recurring task patterns.
Architecture
Read docs/architecture.md for component overview, data flow, and design decisions.
Key Constraints
- 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)