# Repository Guidelines ## Project Structure & Module Organization - Source: `src/` - Vue 3.5+ - TypeScript - Tailwind 4 - Key areas: - `components/` - `views/` - `stores/` (Pinia) - `composables/` - `services/` - `utils/` - `assets/` - `locales/` - Routing: `src/router.ts`, - i18n: `src/i18n.ts`, - Entry Point: `src/main.ts`. - Tests: - unit/component in `tests-ui/` and `src/**/*.test.ts` - E2E (Playwright) in `browser_tests/**/*.spec.ts` - Public assets: `public/` - Build output: `dist/` - Configs - `vite.config.mts` - `vitest.config.ts` - `playwright.config.ts` - `eslint.config.ts` - `.prettierrc` - etc. ## Monorepo Architecture The project uses **Nx** for build orchestration and task management: - **Task Orchestration**: Commands like `dev`, `build`, `lint`, and `test:browser` run via Nx - **Caching**: Nx provides intelligent caching for faster rebuilds - **Configuration**: Managed through `nx.json` with plugins for ESLint, Storybook, Vite, and Playwright - **Dependencies**: Nx handles dependency graph analysis and parallel execution Key Nx features: - Build target caching and incremental builds - Parallel task execution across the monorepo - Plugin-based architecture for different tools ## Build, Test, and Development Commands - `pnpm dev`: Start Vite dev server. - `pnpm dev:electron`: Dev server with Electron API mocks - `pnpm build`: Type-check then production build to `dist/` - `pnpm preview`: Preview the production build locally - `pnpm test:unit`: Run Vitest unit tests - `pnpm test:browser`: Run Playwright E2E tests (`browser_tests/`) - `pnpm lint` / `pnpm lint:fix`: Lint (ESLint) - `pnpm format` / `pnpm format:check`: Prettier - `pnpm typecheck`: Vue TSC type checking ## Coding Style & Naming Conventions - Language: - TypeScript (exclusive, no new JavaScript) - Vue 3 SFCs (`.vue`) - Composition API only - Tailwind 4 styling - Avoid `