- Turborepo monorepo:
apps/desktop(Tauri v2 + SolidStart),apps/web(Next.js),apps/cli(Rust CLI).packages/*shared libs (e.g.,database,ui,ui-solid,utils,web-*).crates/*Rust media/recording/rendering/camera crates.scripts/*,infra/, andpackages/local-docker/for tooling and local services.
- Install:
pnpm install; setup:pnpm env-setupthenpnpm cap-setup. - Dev:
pnpm dev(web+desktop). Desktop only:pnpm dev:desktop. Web only:pnpm dev:weborcd apps/web && pnpm dev. - Build:
pnpm build(Turbo). Desktop release:pnpm tauri:build. - DB:
pnpm db:generate→pnpm db:push→pnpm db:studio. - Docker:
pnpm docker:up | docker:stop | docker:clean. - Quality:
pnpm lint,pnpm format,pnpm typecheck. Rust:cargo build -p <crate>,cargo test -p <crate>.
- TypeScript: 2‑space indent; Biome formats/lints (
pnpm format). - Rust:
rustfmt+ workspace clippy lints. - Naming: files kebab‑case (
user-menu.tsx); components PascalCase; Rust modules snake_case, crates kebab‑case. - Runtime: Node 20, pnpm 10.x, Rust 1.88+, Docker for MySQL/MinIO.
- TS/JS: Vitest where present (e.g., desktop). Name tests
*.test.ts(x)near sources. - Rust:
cargo testper crate; tests insrcortests. - Prefer unit tests for logic and light smoke tests for flows; no strict coverage yet.
- Conventional style:
feat:,fix:,chore:,improve:,refactor:,docs:(e.g.,fix: hide watermark for pro users). - PRs: clear description, linked issues, screenshots/GIFs for UI, env/migration notes. Keep scope tight and update docs when behavior changes.
- Do not start extra servers; use
pnpm dev:weborpnpm dev:desktopas needed. - Never edit auto‑generated files:
**/tauri.ts,**/queries.ts,apps/desktop/src-tauri/gen/**. - Prefer existing scripts and Turbo filters over ad‑hoc commands; clear
.turboonly when necessary. - Database flow: always
db:generate→db:pushbefore relying on new schema. - Keep secrets out of VCS; configure via
.envfrompnpm env-setup. - macOS note: desktop permissions (screen/mic) apply to the terminal running
pnpm dev:desktop.