Analyser le besoin — Identifier le type d'application (API REST, application web full-stack, back-office) et définir l'architecture : MVC classique Laravel, DDD avec services et repositories, ou API-only avec Sanctum/Passport pour l'authentification.
Structurer le projet — Organiser avec les conventions Laravel : app/Models/ pour Eloquent, app/Http/Controllers/ avec des controllers ressource, app/Services/ pour la logique métier, app/Repositories/ pour l'abstraction des données, et app/Http/Requests/ pour la validation des formulaires.
Concevoir les models Eloquent — Définir les models avec les relations (hasMany, belongsTo, morphMany, belongsToMany), les scopes locaux et globaux, les mutators et accessors (Attribute::make()), les casts, et les événements de model (creating, updating).
Implémenter les controllers et routes — Créer les controllers ressource avec artisan make:controller --resource, définir les routes dans routes/api.php et routes/web.php, utiliser le route model binding implicite, et grouper les routes avec middleware et préfixes.
Gérer les migrations et seeders — Écrire les migrations avec le Schema Builder, configurer les foreign keys et les index, créer les seeders et factories avec Faker pour les données de test, et utiliser artisan migrate:fresh --seed pour réinitialiser l'environnement de développement.
Implémenter les Blade templates — Créer les layouts avec @extends et @yield, les composants Blade avec <x-component>, les slots nommés, les directives custom, et utiliser Livewire ou Inertia.js pour l'interactivité sans quitter l'écosystème Laravel.
Configurer les queues et jobs — Implémenter les jobs asynchrones avec dispatch(), configurer les queues (Redis, SQS, database), gérer les retries et les failed jobs, planifier les tâches récurrentes avec le scheduler dans app/Console/Kernel.php.
Tester et déployer — Écrire des tests avec PHPUnit et les helpers Laravel (actingAs, assertDatabaseHas), utiliser les factories pour les données de test, configurer le déploiement avec Laravel Forge, Envoyer ou Docker, et optimiser avec artisan optimize.
Règles
Utilise toujours les Form Requests (php artisan make:request) pour la validation plutôt que de valider directement dans le controller.
Charge les relations Eloquent avec with() (eager loading) pour éviter le problème N+1 — ne fais jamais de lazy loading en boucle.
Ne place jamais de logique métier dans les controllers ou les models — délègue aux services et actions pour la testabilité.
Protège toujours les routes sensibles avec les middleware d'authentification (auth:sanctum) et d'autorisation (policies et gates).
Utilise les queues pour toutes les opérations longues (envoi d'emails, traitement d'images, appels API externes) afin de ne jamais bloquer la requête HTTP.