- **When documenting**:
- Follow documentation conventions below.
+## Monorepo structure
+
+4 TypeScript packages (pnpm workspace: `/`, `/ui/common`, `/ui/cli`, `/ui/web`) + 1 Python project (`/tests/ocpp-server`). Each has its own quality gates — see sub-project READMEs.
+
+UI Common (`ui-common`) is the shared library for CLI and Web UI. No re-exports between packages.
+
## Core principles
- **Design patterns**: prefer established patterns (e.g., factory, singleton, strategy) for code organization and extensibility.
## Quality gates
-- Documented build/type checks/lint pass (where applicable).
-- Documented tests pass (where applicable).
-- Documentation updated to reflect changes when necessary.
+Each sub-project has its own quality gates (format, typecheck, lint, build, test). See sub-project READMEs for exact commands. Run gates for every sub-project affected by your changes.
+
- Logs use appropriate levels (error, warn, info, debug).
- Pull request title and commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) format.
description: Run simulator code linter and formatter.
---
-Run simulator code formatter and linter with autofixes.
+Run root simulator code formatter and linter with autofixes (root only, not ui/\* sub-projects).
Raw output:
!`pnpm format`
Summarize code formatter or linter failures and propose targeted fixes.
description: Run simulator test suite
---
-Run simulator test suite.
+Run root simulator test suite (root only, not ui/\* sub-projects).
Raw output:
!`pnpm test`
Summarize failing tests and propose targeted fixes.
## Available Scripts
-| Script | Description |
-| -------------------- | -------------------------------- |
-| `pnpm typecheck` | Type-check |
-| `pnpm lint` | Run ESLint |
-| `pnpm format` | Run Prettier and ESLint auto-fix |
-| `pnpm test` | Run unit tests |
-| `pnpm test:coverage` | Run unit tests with coverage |
+| Script | Description |
+| -------------------- | ----------------------------------------- |
+| `pnpm build` | Type-check (same as typecheck, no output) |
+| `pnpm typecheck` | Type-check |
+| `pnpm lint` | Run ESLint |
+| `pnpm format` | Run Prettier and ESLint auto-fix |
+| `pnpm test` | Run unit tests |
+| `pnpm test:coverage` | Run unit tests with coverage |