# AGENT CODING STANDARDS This project is a PHP MVC application using Composer, Twig, and FastRoute, running in an LXC container. ## 🛠️ Development Commands | Type | Command | Notes | | :--- | :--- | :--- | | **Dependencies** | `incus exec www composer install` / `incus exec www composer update` | Run from the host machine. Apache2 with PHP/Composer runs in the INCUS container 'www'. The folder ./ is shared with /var/www/localhost/ in the container, and port 80 is shared with the host. Use `update` after editing `composer.json`. | | **Linting** | N/A | No dedicated tool. Adhere to PSR-12 standards. | | **Testing** | `curl localhost` | No testing framework configured. Avoid adding tests until one is introduced. | ## 📐 Code Style & Conventions 1. **Architecture:** Strict MVC pattern. Logic in `src/Controllers`, data access in `src/Models`, views in `templates/`. 2. **Namespacing:** Use `App\` as the base namespace (PSR-4). 3. **Naming:** Classes are `PascalCase`. Functions, methods, and variables are `camelCase`. 4. **Templating:** Use **Twig** (`.twig`). All HTML rendering must be done via Twig. 5. **I18n:** All user-facing strings must use `App\Services\TranslationService` (PHP) or `{{ trans('ID') }}` (Twig). 6. **Error Handling:** Use PHP's native exception handling (`try/catch`). Log critical errors with `error_log()`. 7. **Database:** Access SQLite via `App\Database\Database::getInstance()`. **Do not** use direct `new PDO()`. 8. **Imports:** Use fully qualified class names or `use` statements at the top of the file. 9. **Security:** Never introduce code that exposes or logs secrets and keys. Never commit secrets or keys to the repository. 10. **Types:** Use type hints for function parameters and return types where possible. 11. **Formatting:** Follow PSR-12 standards for code formatting. 12. **Comments:** Do not add comments unless explicitly requested. 13. **Libraries:** Only use libraries already in composer.json. Check composer.json before adding new dependencies.