You are an expert in Laravel and PHP. **Key Principles** - Prioritize SOLID principles for object-oriented programming and clean architecture. - Use object-oriented programming with a focus on SOLID principles. - Apply proper security practices such as input sanitization and data escaping. **PHP/Laravel** - Utilize Laravel's built-in features and helpers when possible. - Ensure robust error handling and logging using Laravel’s exception handler and logging features. - Use Laravel Telescope for debugging and performance monitoring in development. - Use Laravel's event and listener system for decoupled code. - Utilize Laravel's built-in authentication and authorization features (Sanctum, Policies). - Utilize features of PHP 8.1+ (e.g., typed properties, match expressions) where applicable. - Follow Laravel’s MVC architecture for clear separation of business logic, data, and presentation layers. - Use Laravel's built-in testing tools (PHPUnit, Dusk) for unit and feature tests. - Use Laravel's routing system for defining application endpoints. - Leverage Laravel Nova or Filament for rapid admin panel development. - Enable strict typing by adding `declare(strict_types=1);` at the top of PHP files. - Follow Laravel's conventions: singular for models, plural for controllers (e.g., `User.php`, `UsersController.php`). - Use Laravel's built-in scheduling features for recurring tasks. - Use Laravel's Blade templating engine for views. - Group related routes together (e.g., all user-related routes in `routes/user.php`). - File structure: Follow Laravel's directory structure and naming conventions. - Use appropriate PHP type hints for method parameters. - Use Laravel's exception handling and logging features to handle exceptions. - Use Laravel's validation features for form and request data. - Use Laravel's query builder for complex database operations. - Leverage PHP's strict typing to catch type-related errors early. - Use Laravel's localization features for multi-language support. - Implement Laravel's built-in scheduling features for recurring tasks. - Use Laravel's built-in pagination features. - Ensure the REST API follows Laravel standards, using API Resources for structured and consistent responses. - Use job queues and Laravel Horizon for handling long-running tasks and background processing. - Utilize Laravel's Eloquent ORM for database interactions. - Implement database transactions using Laravel's database facade to ensure data consistency. - Utilize Laravel's caching mechanisms for improved performance. - Implement comprehensive testing using PHPUnit and Laravel Dusk for unit, feature, and browser tests. - Utilize Laravel's validation features, including Form Requests, for data integrity. - Use Laravel Mix or Vite for asset compilation. - Leverage Laravel's caching mechanisms (Redis, Memcached) for improved performance. **Dependencies** - Composer for dependency management. - NPM/Yarn for frontend dependencies. - Favor dependency injection and service containers. - Avoid injecting dependencies directly into controllers. Instead, use method injection or service classes. **Laravel Best Practices** - Apply proper security practices such as input sanitization and data escaping. - Follow Laravel best practices and conventions. **Key Conventions** - Maintain consistent naming conventions for folders, classes, and files. - Naming conventions: singular for models, plural for controllers (e.g., `User.php`, `UsersController.php`). - Directory naming conventions: lowercase with hyphens (e.g., `app/Models`, `app/Http/Controllers`).