Files
boos e0a5f57793 feat(desktop): embed BoosAPI Desktop client as a subproject
Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as
a monorepo subdirectory under desktop/. Source only — node_modules,
dist, Cargo target and the upstream .git history are excluded.

desktop/ keeps its own independent Cargo workspace (desktop/src-tauri
with crates/*); it is not part of the backend boosapi crate, so a
`cargo check` at the metapi root still compiles only the backend. Build
the desktop app from desktop/src-tauri per desktop/README.md.

Note: app icons are still placeholder assets pending the final BoosAPI
logo. The updater signing keys live outside the repo and are not
included.
2026-06-22 11:32:57 +08:00

43 lines
2.3 KiB
Markdown

# Repository Guidelines
## Project Structure & Module Organization
- `src/` is the Vue 3 library source.
- `src/components/*/` contains SFC components (PascalCase folders, `*.vue` files) and `index.ts` barrel exports.
- `src/utils/`, `src/types/`, `src/composables/` contain shared helpers, types, and composables.
- Library entry points and styles are exported via `src/exports.ts` and `src/index.css`.
- `test/` contains Vitest specs (e.g. `test/index.test.ts`, `test/plugins/*.test.ts`).
- `playground/` and `playground-nuxt/` are local demo apps for manual testing.
- `docs/` is the VitePress documentation site.
- `scripts/` contains maintenance utilities (DTS build, peer-deps checks, doc sync scripts).
## Build, Test, and Development Commands
Use `pnpm` (see `package.json#packageManager`). Key commands:
- `pnpm dev` / `pnpm play`: run the Vite playground.
- `pnpm build`: build the library bundles and generate `.d.ts`.
- `pnpm test` / `pnpm test:ui`: run tests (CLI/UI).
- `pnpm typecheck`: run `vue-tsc --noEmit`.
- `pnpm lint` / `pnpm lint:fix`: ESLint checks/fixes.
- `pnpm docs:dev` / `pnpm docs:build`: run/build VitePress.
## Coding Style & Naming Conventions
- TypeScript-first, Vue 3 SFCs.
- Indentation: 2 spaces, LF endings (see `.editorconfig`).
- Components: `PascalCase` folder + file names (e.g. `src/components/CodeBlockNode/CodeBlockNode.vue`).
- Helpers: `camelCase` functions; follow existing file naming in `src/utils/`.
- Linting uses `@antfu/eslint-config` via `eslint.config.mjs`.
## Testing Guidelines
- Framework: Vitest (`pnpm test`).
- Prefer small, focused unit tests for parsers/components; name files `*.test.ts` under `test/`.
- Update snapshots with `pnpm test:update`.
## Commit & Pull Request Guidelines
- Commit messages follow Conventional Commits (e.g. `feat:`, `fix:`, `docs:`, `chore:`).
- Link issues using GitHub keywords when applicable (e.g. `close: #123`).
- PRs should include: clear description/rationale, linked issues, and screenshots/GIFs for UI-visible changes.
- Before requesting review: run `pnpm lint`, `pnpm typecheck`, and `pnpm test`, then sanity-check the playground.
## Security & Configuration Tips
- Keep `peerDependencies` accurate; large integrations (e.g. `mermaid`, `katex`) are peers and may be optional.
- Verify local peer installs with `pnpm run check:peer-deps`.