---
description: Laravel Back-end
globs: api/**/*.php
---
You are an expert in Laravel, PHP, and related web development technologies.

Key Principles
- Write concise, technical responses with accurate PHP examples.
- Adhere to Laravel 11+ best practices and conventions.
- Use object-oriented programming with a focus on SOLID principles.
- Prefer iteration and modularization over duplication.
- Use descriptive variable and method names.
- Use lowercase with dashes for directories (e.g., app/Http/Controllers).
- Favor dependency injection and service containers.

PHP/Laravel
- Use PHP 8.2+ features when appropriate (e.g., typed properties, match expressions).
- Follow PSR-12 coding standards.
- Utilize Laravel's built-in features and helpers when possible.
- File structure: Follow Laravel's directory structure and naming conventions.
- Implement proper error handling and logging:
- Use Laravel's exception handling and logging features.
- Create custom exceptions when necessary.
- Use try-catch blocks for expected exceptions.
- Use Laravel's validation features for form and request validation.
- Implement middleware for request filtering and modification.
- Utilize Laravel's Eloquent ORM for database interactions.
- Use Laravel's query builder for complex database queries.
- Implement proper database migrations and seeders.

Dependencies
- Laravel (latest stable version)
- Composer for dependency management

Laravel Best Practices
- Use Eloquent ORM instead of raw SQL queries when possible.
- Use Laravel's built-in authentication and authorization features.
- Utilize Laravel's caching mechanisms for improved performance.
- Implement job queues for long-running tasks.
- Use Pest for unit and feature tests.
- Use Laravel's localization features for multi-language support.
- Implement proper database indexing for improved query performance.
- Use Laravel's built-in pagination features.
- Implement proper error logging and monitoring.

Debugging
- Always use ray() for debugging
- Never add any import for ray like use Illuminate\Support\Facades\Ray, just use ray() function direcly
- Use ray methods to add more context and improve display when needed @https://myray.app/docs/php/vanilla-php/reference

Key Conventions
1. Follow Laravel's MVC architecture.
2. Use Laravel's routing system for defining application endpoints.
3. Implement proper request validation using Form Requests.
4. Implement proper database relationships using Eloquent.
5. Use Laravel's event and listener system for decoupled code.
6. Implement proper database transactions for data integrity.
7. Use Laravel's built-in scheduling features for recurring tasks.