# Repository Guidelines

## Project Structure & Module Organization

This repository is a private pnpm workspace. Workspace packages are declared in `pnpm-workspace.yaml` under `app/*`.

The active application is `app/citizen-frontend`, a Vue 3 + Vite + Vuetify frontend written in TypeScript. Its source lives in `app/citizen-frontend/src/`:

- `src/main.ts` bootstraps the app and global styles.
- `src/App.vue` hosts the router view.
- `src/pages/` contains route-level pages.
- `src/components/` contains reusable Vue components.
- `src/stores/` contains Pinia stores.
- `src/router/` contains Vue Router configuration.
- `src/assets/` stores static assets such as local fonts.
- `src/styles/` contains global style and Vuetify settings.

If a nested `AGENTS.md` exists, follow the closest one for files in that subtree.

## Build, Test, and Development Commands

Run commands from `app/citizen-frontend` unless noted otherwise.

- `pnpm install`: install workspace dependencies.
- `pnpm dev`: start the Vite development server.
- `pnpm build`: run type-checking and production build.
- `pnpm build-only`: build the Vite app without type-checking.
- `pnpm type-check`: run `vue-tsc`.
- `pnpm lint`: run ESLint.
- `pnpm lint:fix`: apply ESLint auto-fixes.
- `pnpm preview`: preview the production build locally.

## Coding Style & Naming Conventions

Use TypeScript, Vue 3 Composition API, and `<script setup>` for Vue components. Follow the existing Vuetify component style and route/page organization. Use 2-space indentation, single quotes, no semicolons, and trailing commas where the linter expects them.

Name Vue pages and components descriptively, matching existing patterns such as `self-assessment.vue`, `DefaultLayout.vue`, and Pinia stores under `src/stores/`.

## Testing Guidelines

No dedicated test suite is currently configured. For changes, run at minimum:

```sh
pnpm lint
pnpm type-check
```

For UI or routing changes, also run `pnpm build` and manually verify the affected flows in the browser.

## Commit & Pull Request Guidelines

Recent commits use short Conventional Commit-style prefixes, for example `feat:`, `style:`, and `restyle:`. Keep commit messages concise and scoped to the change.

Pull requests should include a short summary, affected paths, verification commands run, and screenshots or screen recordings for visible UI changes. Link related issues when available.

## Security & Configuration Tips

Do not commit secrets or environment-specific credentials. Keep third-party licenses with bundled assets, especially files under `src/assets/`.
