# AGENTS.md Project overview - Symfony 8 + API Platform 4 backend, Nuxt 3 frontend in `frontend/`. - Apache vhost serves API under `/api` and frontend from `frontend/dist`. - API base URL on frontend uses `NUXT_PUBLIC_API_BASE` (see `frontend/.env`). Backend conventions - Use English for code identifiers/messages; keep “pont-bascule” as domain term. - API Platform operations are defined on Doctrine entities. - Reception entity is in `src/Entity/Reception.php`, with custom weigh endpoint `/receptions/weigh`. - Reception fields: `dsd`, `weight`, `date_reception`, `license_plate`, `current_step` (default 0), `is_valid` (default false). - `date_reception` is set by the UI, stored as `DateTimeImmutable`. - Weight entity (`src/Entity/Weight.php`) is 1–1 with Reception, weights stored as `int` (kg), dates nullable. - Custom exception: `App\Exception\PontBasculeException` with French messages, mapped to 500 in provider. - Parsing of pont-bascule payload is in `src/Service/PontBasculePayloadDecoder.php`. - `config/reference.php` is auto-generated; keep it. Frontend conventions - Nuxt SSR disabled; Tailwind used. - Layout in `frontend/layouts/default.vue`: max width `1050px`, header full width. - Tailwind custom color palette is `primary` (e.g. `bg-primary-500`). - API composable in `frontend/composables/useApi.ts` with `get/post/put/patch/delete` and default JSON/PATCH content types. - Pinia store: `frontend/stores/reception.ts` is the source of truth for the current reception. - Reception step UI uses store state (`currentStep`) in `frontend/pages/reception/[[id]].vue`. - Active nav styles in header use `NuxtLink` with `custom` slot. Environment & routing - Frontend dev server: `npm run dev` in `frontend/`. - API base for local dev: `http://localhost:8080/api` (set in `frontend/.env` via `NUXT_PUBLIC_API_BASE`). - CORS handled by Nelmio; `.env` includes `CORS_ALLOW_ORIGIN` regex for localhost. Notes - Do not add a GET that creates resources; use POST + PATCH. - Keep endpoints in plural (API Platform convention).